我在Laravel中使用Phpunit,我的Api有多个可接受的响应。我有2种情况的问题:
1-响应结构可以是以下两种之一:
$response->assertJsonStructure(['cities'=>[]]);
or
$response->assertJsonStructure(['cities'=>[['id','name']]])
2-响应状态可以为200或302
$response->assertStatus(200);
or
$response->assertStatus(302);
但是我找不到任何方法来“或”这两个条件。
我正在寻找这样的东西:
$response->assertOr(
$response->assertStatus(200),
$response->assertStatus(302)
);
答案 0 :(得分:2)
#1 (如果#1 ),如果您认为该值可能为空,则将键与assertArrayHasKey()
$response->assertArrayHasKey('cities', $response->getContent());
对于#2 ,您可以使用assertContains()
赞
$response->assertContains($response->getStatusCode(), array(200,302));
在这里您可以找到更多信息。 https://phpunit.readthedocs.io/en/7.4/assertions.html#assertcontains
答案 1 :(得分:1)
在2º的情况下,您可以使用
if($response->getStatusCode() == 410) {
$response->assertStatus(410);
} else {
$response->assertStatus(200);
}