laravel - 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 仍然无法正常工作。这些文档至少具有误导性。
解决方案
我在使用 Laravel v5.6 时遇到了同样的问题。.env.testing
我使用不同的用户名、密码和数据库设置了一个文件,但我的测试始终在主.env
数据库中运行。
运行 config cache 命令时,您似乎需要指定测试环境。运行此命令后,它按照文档中的描述工作:
php artisan config:cache --env=testing
推荐阅读
- javascript - 将纯 Nativescript 5.x 项目迁移到 Nativescript 6 - JS ERROR NOT READY: generator is not seeded
- javascript - Vue optionMergeStrategies 方法无法访问“this”关键字
- javascript - 事件不是在 vue 上创建事件中的构造函数
- vb.net - Visual Studio 错误索引超出数组范围
- google-calendar-api - 设置范围 calendar.readonly 导致谷歌登录错误
- stored-procedures - 如何将参数从 Asp.net 应用程序传递到 Power BI
- c# - 如何将一个对象绑定/分配给另一个对象
- mysql - pgloader MySQL to Postgres:禁用指定表的 FK
- javascript - Node js 和 mongo , pre, post hook 中间件不在 findByIdAndUpdate 上执行
- azure-devops - 在多阶段yaml管道中将矩阵定义为变量