php 如何使用Pest测试Laravel生产环境中的代码?

7tofc5zh  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(155)

我在一个Laravel项目中有一个中间件,它可以在sentry中触发一些警报

$status = $response->status(); 
if ($status === 500 && config('app.env') === 'production') {            
   \Sentry\captureException(new \Exception('my message', $status));
}

在我的测试中,我有以下内容:

Saloon::fake([
    PostRequest::class => MockResponse::make(["message"=>"error"], 500),
]);

$this->postJson("/my_url", [
    'body' => 'test'
])->assertJson($response);

$exception = new \Exception('my message', 500);

$sentry = Mockery::mock(\Sentry\State\HubInterface::class);
$sentry->shouldReceive('captureException')->with($exception);

在我的测试覆盖率中,我可以看到没有进入条件,因为测试是在测试环境中执行的,我该怎么办?

2admgd59

2admgd591#

您可以在测试开始时使用config()函数设置环境值。

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

https://laravel.com/docs/10.x/configuration#accessing-configuration-values

**注意:**确保此更改不会触发测试设置之外的任何操作。

相关问题