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
升级到 5.4 后在 Laravel BrowserKit 包中找不到 PHPUnit\Framework\Constraint\Constraint