【问题标题】:Laravel testing different code on same databaseLaravel 在同一个数据库上测试不同的代码
【发布时间】:2023-01-12 03:39:08
【问题描述】:

我想将我的应用程序从自定义框架移动到 Laravel,我试图弄清楚将来如何在 Laravel 上提供测试。

目前我这样测试:

  • 我的应用程序位于两个文件夹maintest
    • mainappexample.com 域的文件夹
    • testtest.appexample.com 域的文件夹
  • 所以当我想做一些更改时,首先我将其放入test文件夹并检查是否一切正常,然后我将替换test文件夹复制到main文件夹

如果我想使用 laravel,我应该如何使用 laravel 正确地进行这些测试?

谢谢

【问题讨论】:

  • 如果您要设置一个“测试”环境,为什么不设置一个“测试”数据库呢?为测试和实际环境使用相同的数据库只会增强墨菲定律
  • 是的,“测试”数据库也应该如此,但问题更多是关于如何正确测试代码?应该是 2 个 laravel 项目(一个用于生产,一个用于测试)还是可以用 1 个 laravel 项目制作?

标签: php laravel testing


【解决方案1】:

所以,你所拥有的不是测试环境但是staging environment...

你需要的是 2 个 Laravel 应用程序:

  • 生产 (appexample.com) 应该使用生产 GIT 标签(例如,v1.5.3)或至少使用像 mastermain 这样的生产分支
  • Staging (test.exampleapp.com) 应该使用像develop 这样的开发分支,或者你的团队定义的任何分支

你可以看看Laravel ForgeLaravel Envoyer

  • Forge:允许您管理服务器、环境、部署、PHP 版本、数据库(我不建议在 Laravel 应用服务器上安装数据库),以及更多东西
    • 这些服务器可以位于 AWS、Digital Ocean 等
  • Envoyer:允许您管理部署、环境等
    • Envoyer 的优点是它可以帮助您更轻松地部署到多个服务器(假设您有一个负载均衡器和它后面的 4 个服务器,它会自动部署相同的代码并在每个服务器上运行部署步骤,如果任何失败,它只是在客户不知道发生任何事情的情况下返回)

这意味着你应该(我会说必须)有单独的数据库,一个用于分期和一个生产(您永远不要在本地或开发环境之外的任何环境中运行 PHPUNIT 测试)。

此外,您应该在登台时“复制”您的数据,因此登台与生产相关的尽可能相似:

  • 相同的数据库版本
  • 相同的网络服务器引擎
  • 相同的 PHP 版本

如果你要升级任何东西,如果暂存有比生产更新的数据库、网络服务器、PHP 等版本,那就是想法,在发布之前在那里测试东西。

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多