If you need to set an environment to be a specific one such as staging you can override the environment by changing the config value app_env
config(['app.env' => 'staging']);
Then doing a dd on config(‘app.env’) will return that environment you’ve just set.
I haven’t found a way to set environments with app()->environment() so instead, I recommend using this in_array function and passing in the config(‘app.env’) and then specifically defining the environments.
in_array(config('app.env'), ['local', 'staging'])
For example, say you have this in a command:
if (! in_array(config('app.env'), ['local', 'staging'])) {
$this->error(‘Will only run on local and staging environments’);
return true;
}
Test this runs when the environment is set to production
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);
});