Laravel Dusk 忽略 .env.dusk 和 .env.dusk.local(使用 Valet 和 Laravel 5.5)
Posted
技术标签:
【中文标题】Laravel Dusk 忽略 .env.dusk 和 .env.dusk.local(使用 Valet 和 Laravel 5.5)【英文标题】:Laravel Dusk ignores .env.dusk and .env.dusk.local (Using Valet and Laravel 5.5) 【发布时间】:2018-02-19 05:44:40 【问题描述】:我正在尝试运行 Laravel Dusk,我需要使用测试数据库。当我检查屏幕截图时,它说数据库不存在。问题是在 .env 上定义的数据库而不是在 .env.dusk 上定义的数据库......我试图将文件重命名为 .env.dusk.local ,但仍然没有运气。我做错了什么?
【问题讨论】:
答案是什么?这让我发疯了很长时间。当我运行php artisan dusk
时,它会忽略我的 .env.dusk.local
,我可以通过将 dd(env('APP_ENV'));
插入 DuskCommand.php 来证明这一点。
【参考方案1】:
按照以下步骤,我能够让它工作:
-
删除
.env.testing
运行php artisan dusk
(这将创建phpunit.dusk.xml
)。
将以下内容添加到这个新创建的文件的末尾
<phpunit>
...
<php>
<server name="APP_ENV" value="local"/>
</php>
</phpunit>
-
您现在可以恢复
.env.testing
,它仍然可以用于 phpunit 测试。
原始答案
我发现如果你删除.env.testing
,它就会使用.env.dusk.local
。似乎.env.testing
总是优先。
这并不能解决使用单独的 .env 进行单元测试和黄昏的问题;这在使用 sqlite 在内存中运行单元测试和黄昏测试时很有用。
【讨论】:
【参考方案2】:我遇到了同样的问题。最近我发现 .env 文件在黄昏开始之前被缓存了。
我通过添加解决了它
$this->artisan('config:cache');
进入 CreateApplication.php 中的 createApplication() 函数。它有效:)
但是,如果我完成了黄昏测试,我必须运行
php artisan config:cache
让原始服务器运行。
编辑:
后来我尝试简单地调用
php artisan config:clear
还可以防止应用程序缓存 env 变量。 (更简单更快)
【讨论】:
【参考方案3】:尝试清除缓存?我记得我第一次开始使用黄昏时遇到过类似的问题。
php artisan cache:clear
【讨论】:
试过了,没有运气。也尝试重新启动代客服务,但效果不佳。 这没有帮助。我也一直认为本地和测试环境默认不会被缓存。以上是关于Laravel Dusk 忽略 .env.dusk 和 .env.dusk.local(使用 Valet 和 Laravel 5.5)的主要内容,如果未能解决你的问题,请参考以下文章
Laravel dusk 安装 ChromeDriver 出错的解决办法
Laravel Dusk 错误:无法连接到 localhost 端口 9515:连接被拒绝
如何使用 Laravel Dusk 测试身份验证? [关闭]