Laravel 5.4 phpunit 与黄昏测试 Env App_Url

Posted

技术标签:

【中文标题】Laravel 5.4 phpunit 与黄昏测试 Env App_Url【英文标题】:Laravel 5.4 phpunit vs dusk tests Env App_Url 【发布时间】:2018-01-21 01:06:24 【问题描述】:

phpunit 测试和 Artisan Dusk 测试都使用来自 .env 文件的 APP_URL

但是有一些奇怪的东西,可能是因为我的设置但我不知道,它很疯狂。

我有 Xampp,我的项目在 localhost/forum/

当我有

APP_URL=http://localhost

我的单元测试没问题。

例如

$response = $this->get('sekcja/sadsadsadsadas');

        $response->assertStatus(200);

一切都好。

就像 laravel 知道它是 http://localhost 但在 http://localhost/forum/ 上进行测试,因为有这个项目并在 http://localhost/forum/sekcja/sadsadsadsadas 上查看

但是……

黄昏看错了。

Dusk 正在加载我欢迎 XAMPP 页面的本地主机。 localhost/forum/不是我的项目页面

然后我将ENV更改为APP_URL=http://localhost/forum/

而且效果不错,黄昏测试也不错……

但是,你知道吗?

我的 PHPunit 测试不好,它们不再工作了。

他们再也找不到这个$this->get('sekcja/sadsadsadsadas');了。

所以我的问题是

这里发生了什么?在我为黄昏阅读的文档中,我必须按照我的设置进行设置,但是我的 PHPunit 测试被破坏了。为什么?如果 phpunit 和黄昏测试都使用相同的变量,为什么他们想要不同的值?这有点傻。

【问题讨论】:

我不知道你是如何运行你的黄昏测试的,你是通过php artisan serve 或类似的东西运行标准的 php 网络服务器吗?这与使用 XAMPP 不同,可能是您的问题的原因,我从未使用过 XAMPP,我只使用过 Homestead,但也许这就是问题的原因。 我只有 htdocss 中的所有内容,它是通过 xampp 运行的。我通过php artisan黄昏@JonnySerra进行测试 【参考方案1】:

您可以专门为黄昏创建一个单独的 .env 文件。

如文档中所述:

运行测试时,Dusk 会备份您的 .env 文件并重命名您的 .env 的黄昏环境。测试完成后,您的 .env 文件将被恢复。

这应该可以帮助您解决问题。

https://laravel.com/docs/5.4/dusk/#environment-handling

【讨论】:

以上是关于Laravel 5.4 phpunit 与黄昏测试 Env App_Url的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.4 上的示例 PHPUnit 测试失败并显示 404

PHPUnit 测试使用 XAMPP localhost 而不是 laravel artisan serve

使用 phpunit.xml、.env.dusk.local 和 sqlite 内存数据库设置 Laravel 5.4 和 Dusk

用于 PHPunit 的 Laravel 5.4 模型模拟

升级到 5.4 后在 Laravel BrowserKit 包中找不到 PHPUnit\Framework\Constraint\Constraint

反射异常:Laravel 5.4