我想测试422响应体,因为在我的情况下,它应该包含验证错误,所以基本上我的测试看起来像这样
public function testReturnsBadRequest(): void
{
$response = static::createClient()->request(
'POST',
'api/v1/products/id',
[
'headers' => [
'accept' => ['application/json'],
'content-type' => 'application/json',
],
'body' => json_encode(['shopId' => 'invalid',])
]
);
self::assertResponseStatusCodeSame(422);
/** @var array{data: array<string, mixed>} $product */
$errors = json_decode($response->getContent(), true);
self::assertArrayHasKey('errors', $errors);
}
字符串
一切正常,直到我尝试获取内容的时候,当我调用$response->getContent()
时,我的测试失败并出错
Symfony\Component\HttpClient\Exception\ClientException:为“http://localhost/api/v1/products/id”返回HTTP 422。
我怎样才能得到响应体而不是抛出的异常?
1条答案
按热度按时间nkcskrwz1#
您必须:
$respone->getContent(false)
,这样它就不会对不成功的响应抛出异常$response->getContent()
之前添加对$this->expectException(ClientException::class)
的调用:字符串