php - 如何检查异常
问题描述
当无效数据到达服务时,我试图捕获异常
测试:
/**
* @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 正文,我得到了什么
"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
我要做的是检查服务是否在特定条件下抛出异常,并在测试中检查
解决方案
推荐阅读
- wso2 - 如何使用 Analytics 版本 3.2.0 配置 WSO2 API Manager 版本 4.0.0?
- reactjs - 使用效果未按预期调用
- html - 原子中的未知属性“网格模板列”
- javascript - 有条件地显示/隐藏项目
- r - 为什么 `print.function` 不同意用 `substitute()` 创建的函数体?
- javascript - 如何将新项目添加到对象数组
- flutter - Flutter JWT 访问/刷新
- delphi - Delphi 10.4.2 - 如何修复“元素中缺少必需的属性“包含”
“ 错误? - sql - 在 SQL 中连接日期和时间以获取 datetime: 1900-01-01 而不是实际日期错误
- python - 具有奇怪行为的 Keras 模型预测:“training=True”时高acc,否则不好