php - Laravel 5 如何以正确的方式在不同的数据库中运行测试?

标签 php laravel testing

我使用的是 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/

相关文章:

javascript - 提交 HTML 表单,一键执行两个操作

javascript - 创建 Angularjs 工厂来渲染 WP REST API 数据

python - 测试客户端如何工作

web-services - 使用 SoapUI 和 Windows 身份验证测试 Web 服务

php - 基本 boolean 逻辑——如何仅在另一个条件为真时测试条件

php - 保存pdf到本地服务器

laravel - 有没有办法从另一台设备访问 laravel 代客应用程序?

php - Laravel 单例和实例

php - 如何使用 Laravel 测试授权重定向?

android - 将测试包添加到现有的 Android Studio 项目