我用Laravel准备了一个API示例。它总是返回以下对象:
{ "a": 1, "b": 2 }
现在,我想更好地了解如何用 phpunit assertJson assertJsonFragment 我不明白它们之间的区别。
phpunit
assertJson
assertJsonFragment
假设我想断言响应的确切结构,所以它需要 a=1 b=2
a=1
b=2
$response = $this->get('/api/foo'); $response->assertStatus(200) ->assertJson(['a' => 1, 'b' => 2]);
c=3 或者别的什么。然后就是了 方法,对于我的测试,它的行为是相同的,只是给出了不同的错误消息。
c=3
是 婴儿车?有没有其他方法来做我想做的事情,就是确保响应是这个特定的属性集?
从 here :
assertJson 方法将响应转换为数组并利用 PHPUnit::assertArraySubset 在应用程序返回的JSON响应中。所以,如果有 在JSON响应的其他属性中,此测试仍将作为
PHPUnit::assertArraySubset
更重要的是,为了实现你的目标:
assertExactJson 方法
assertExactJson