在低于 5.6 的 Laravel 中,有远程代码执行选项,由 phpunit 测试运行远程代码执行以避免这种情况,我想知道如何在生产中删除
如果您的所有测试都继承自基本 TestCase,那么您始终可以覆盖 setUp 方法,例如:
protected function setUp()
{
parent::setUp();
if (env('APP_ENV') !== 'testing') {
throw new \Exception('Argh!');
}
}
我进一步推动了 Paul 的解决方案,以防止在 env 未指向 local_db Docker 容器时执行测试。这也应该阻止生产中的执行。多架构版本。防止意外刷新。
protected function setUp(): void
{
parent::setUp();
collect(['DB_HOST', 'DB2_HOST', 'DB3_HOST'])->each(function ($db) {
if (env($db) !== 'local_db') {
throw new \Exception( "$db Must use Local DB for testing!");
}
});
}