【问题标题】:Laravel Dusk ignores .env.dusk and .env.dusk.local (Using Valet and Laravel 5.5)Laravel Dusk 忽略 .env.dusk 和 .env.dusk.local(使用 Valet 和 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 来证明这一点。

标签: laravel testing phpunit laravel-valet laravel-dusk


【解决方案1】:

按照以下步骤,我能够让它工作:

  1. 删除.env.testing
  2. 运行php artisan dusk(这将创建phpunit.dusk.xml)。
  3. 将以下内容添加到这个新创建的文件的末尾
<phpunit>
    ...

    <php>
        <server name="APP_ENV" value="local"/>
    </php>
</phpunit>
  1. 您现在可以恢复.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
      

      【讨论】:

      • 试过了,没有运气。也尝试重新启动代客服务,但效果不佳。
      • 这没有帮助。我也一直认为本地和测试环境默认不会被缓存。
      猜你喜欢
      • 2017-06-13
      • 2018-05-22
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2019-04-29
      • 2017-09-15
      • 2018-04-02
      • 1970-01-01
      相关资源
      最近更新 更多