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 错误

Laravel dusk 安装 ChromeDriver 出错的解决办法

Laravel Dusk 错误:无法连接到 localhost 端口 9515:连接被拒绝

如何使用 Laravel Dusk 测试身份验证? [关闭]

Laravel CRUD 应用 Dusk vs PHPUnit

经过测试,chrome 进程仍然在 Docker 容器中的 Laravel Dusk