我使用的是 5.1,但无法找到关于使用单独数据库进行测试的生态和测试系统的最佳实践的明确答案。
我已经:
- 用于开发和运行本地测试的开发机器
- 由 CI 运行的外部服务(仅运行 phpunit)
当我在本地运行测试时,我不希望它们干扰我的开发数据库,因此我为测试创建了专用数据库。
为了克服我只有一个的限制.env
文件,我修改了 phpunit.xml.dist
文件具有通过 <env name="..." value=".."/>
定义的不同数据库凭证.
当我想在远程 CI 服务上运行测试时,我再次需要不同的用户/密码和数据库名称值。在这种情况下,我的存储库中有一个“模板 phpunit.xml”文件,在远程 CI 的初始化阶段,我生成了它们各自的环境变量(与我使用的不同)。
对于所有非生产相关的环境,我需要保持三个文件同步,否则事情会开始崩溃:
-
.env
-
phpunit.xml.dist
-
phpunit.xml
远程CI系统按需生成模板文件
我了解非版本化的好处 .env
,但总是让这些东西保持同步会带来巨大的痛苦。
是否有更好的方法来管理它?
最佳答案
对于我的情况,我生成了一个 phpunit.xml
(注意:没有 .dist
!)在带有特殊 <env>
的 CI 环境中预先填充了自定义 bash 脚本的变量。
我还找到了https://mattstauffer.co/blog/environment-specific-variables-in-laravels-testing-environment最近但没有实现。
关于php - Laravel 5 如何以正确的方式在不同的数据库中运行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32391296/