如何为phpunit断言设置多个可接受的值

Sad*_*egh 3 php phpunit laravel

我在 Laravel 中使用 Phpunit,我的 Api 有多个可接受的响应。我有两种情况的问题:

1-响应结构可以是以下两种之一:

$response->assertJsonStructure(['cities'=>[]]);  

or

$response->assertJsonStructure(['cities'=>[['id','name']]])
Run Code Online (Sandbox Code Playgroud)

2-响应状态可以是200或302

$response->assertStatus(200);

or

$response->assertStatus(302);
Run Code Online (Sandbox Code Playgroud)

但我找不到任何方法来“或”这两个条件。

我正在寻找这样的东西:

$response->assertOr(
    $response->assertStatus(200),
    $response->assertStatus(302)
);
Run Code Online (Sandbox Code Playgroud)

Vik*_*hak 6

对于#1如果您认为该值可能为空,只需将键与assertArrayHasKey()

$response->assertArrayHasKey('cities', $response->getContent()); 
Run Code Online (Sandbox Code Playgroud)

对于#2你可以使用assertContains()Like


 $response->assertContains($response->getStatusCode(), array(200,302));

Run Code Online (Sandbox Code Playgroud)

在这里您可以找到更多信息。https://phpunit.readthedocs.io/en/7.4/assertions.html#assertcontains