Laravel如何在测试期间设置应用程序环境

如果您需要将环境设置为特定环境,例如登台,您可以通过更改配置值app_env来覆盖环境

config(['app.env' => 'staging']);

然后在 config(‘app.env’) 上执行 dd 将返回您刚刚设置的环境。

我还没有找到用app()->environment()设置环境的方法, 所以我建议使用这个in_array 函数并传入config(‘app.env’) 然后专门定义环境。 

in_array(config('app.env'), ['local', 'staging'])

例如,假设您在命令中有这个:

if (! in_array(config('app.env'), ['local', 'staging'])) {
    $this->error(‘Will only run on local and staging environments’);
    return true;
}

在环境设置为生产时测试此运行

test(‘cannot run on production’, function () {

    config(['app.env' => 'production']);

    $this->artisan('db:production-sync')
        ->expectsOutput(DB sync will only run on local and staging environments’)
        ->assertExitCode(true);
});

 

发表回复

您的电子邮箱地址不会被公开。