问题描述
我试图在无效数据到达服务时捕获异常
测试:
/**
* @dataProvider errorDataProvider
*/
public function testErrorProvide(array $responses,\Exception $exception): void
{
$dataProvider = new MyServiceProvider($this->tester->mockGuzzleClient($responses,[RequestOptions::QUERY => ['key' => '123']]));
$this->expectExceptionObject($exception);
$dataProvider->provide(Stub::makeEmpty(Request::class,[
'fullName' => new FullName('test','test','test')
]));
}
json body,我得到了什么
"Error: Option not specified: q"
我应该在哪里使用异常
public function errorDataProvider(): array
{
return [
[
'httpResponses' => [
$this->createErrorResponse(500,'error')// here comes the json which I gave above
],'exception' => new DataProviderUnrecoverableException(),],];
}
private function createErrorResponse(int $code,string $file): array
{
return ['code' => $code,'bodyFile' => "unit/data/service/${file}_response.json"];
}
我如何决定何时使用异常
if (preg_match('/\b(q|key)\b/',$response->getBody()->getContents())) {
throw new DataProviderUnrecoverableException($response->getBody()->getContents());
}
什么错误:
Failed asserting that exception of type "GuzzleHttp\Exception\ServerException" matches expected exception "ServiceDataProvider\DataProviderUnrecoverableException". Message was: "Server error: `GET service?key=123&q=test%20test%20test&format=1` resulted in a `500 Internal Server Error` response:
"Error: Option not specified: q"
" at
我要做的是检查服务是否在特定条件下抛出异常,并在测试中进行检查
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)