PHPUnit
和
Faker
未打开
require-dev
因为您永远不应该在生产上运行测试。没有“借口”,也没有你想怎么称呼它,把它转移到
require
并在那里运行测试。
Faker
可以移动到
要求
,这是测试中使用的大部分时间,但自从Laravel 10.x以来
fake()
助手可用,因此您可以将其移动到
要求
,我个人永远不会在生产中使用Faker,除非你有一个非常具体和好的案例可以帮助你,通常没有好的案例。我确实认为我们有
phpunit
在里面
需要dev
由于标准,就这么简单,因为你肯定可以把它移到
要求
(生产)。
为什么?想象一下,你进行了部署,但有人放弃只运行你想要运行的测试,你可能会运行所有的测试。。。在生产数据库中,想象一下这对公司来说可能是什么类型的灾难?
您可以采用一系列解决方案,但这取决于您的测试方式,更具体地说,如果API有一些您应该考虑的白名单或任何类似的内容,则会限制哪些机器(IP)可以与此外部API通信:
-
让一个cron对API执行特定的HTTP请求(REST),如果只有一个调用满足,那就是了。如果失败,请使用错误跟踪器或类似工具报告。
-
如果你必须测试很多端点(或端点的案例),那么测试就是真正的解决方案,而且你没有我之前说过的限制(没有白名单),那么你可以有一个外部的CI/CD服务,比如circleci.com、GitHub Actions、Bitbucket Pipelines和更多服务,以计划的方式运行这些测试(你可以这样做),所以他们处于另一个非生产环境中。
-
如果您确实有限制,但仍然可以将更多机器(IP)列入白名单,则应阅读外部CI/CD服务文档或与他们联系,询问是否可以为测试运行程序或类似程序获取固定IP,以便在运行测试时将该工作程序列入白名单。
-
下列的
2.
和
3.
,在我曾经工作过的一家公司,我们确实有Bamboo(它是Atlassian的一个CI/CD解决方案,比Bitbucket Pipelines更复杂或更广泛),我们在工作流上有一个按钮,当点击它时,它也会运行这些测试。我们什么时候可以使用这个按钮和行为?当我们在任何分支上运行CI管道时(因为您提交了,所以在任何分支中运行测试),因此如果您还想运行那些外部端点测试(集成测试),您可以在此时执行。
-
如果你不能将另一台机器列入白名单,或者将另一个机器列入白列表要复杂得多,我会非常非常小心地三次检查你在调度程序上写的运行测试的命令,如果你或任何人更改了调用命令上的任何内容,并运行了另一个可能会扰乱真实数据的测试,你将完成一段时间。。。(如果没有自动数据库快照,情况会更糟)
我可能错过了另一个解决方案,但这就是我现在想到的(基于你所写的)。
希望它能有所帮助,否则请添加更多信息!