首页 > 解决方案 > Laravel 5.8 .env.testing 文件不工作

问题描述

我用我的凭据创建了一个 .env.testing 文件,除了数据库的不同表名之外,所有内容都与 .env 相同。

我试过php artisan config:clear删除缓存的配置文件bootstrap/cache/config.php,它破坏了数据库连接。如果我通过运行php artisan config:cache缓存文件重新缓存文件,则会返回,但 .env.testing 文件中没有凭据。当我重新运行 PHPUnit 时,它连接到错误的数据库,即存储在 .env 中的数据库名称而不是 .env.testing。

这是真的吗?最新的 Laravel 版本是否破坏了测试环境?

这是文档阅读的内容:(在此处找到:https ://laravel.com/docs/5.8/testing )

“您可以根据需要自由定义其他测试环境配置值。测试环境变量可以在 phpunit.xml 文件中配置,但请确保在运行测试之前使用 config:clear Artisan 命令清除配置缓存!

此外,您可以在项目的根目录中创建一个 .env.testing 文件。当运行 PHPUnit 测试或使用 --env=testing 选项执行 Artisan 命令时,此文件将覆盖 .env 文件。"

更新

我终于能够通过在 phpunit.xml 文件中添加数据库覆盖来覆盖 .env 中所述的数据库;.env.testing 仍然无法正常工作。这些文档至少具有误导性。

标签: laraveltestingphpunit

解决方案


我在使用 Laravel v5.6 时遇到了同样的问题。.env.testing我使用不同的用户名、密码和数据库设置了一个文件,但我的测试始终在主.env数据库中运行。

运行 config cache 命令时,您似乎需要指定测试环境。运行此命令后,它按照文档中的描述工作:

php artisan config:cache --env=testing

推荐阅读