【发布时间】:2019-02-19 10:57:16
【问题描述】:
我使用 Laravel 准备了一个示例 API。它总是返回这个对象:
{
"a": 1,
"b": 2
}
现在,我想更好地了解如何使用phpunit 对其进行测试。我发现有assertJson 和assertJsonFragment 方法,我无法理解它们之间的区别。
假设我想断言响应的确切结构,所以它需要是 a=1 和 b=2,仅此而已。起初,我确信这会奏效:
$response = $this->get('/api/foo');
$response->assertStatus(200)
->assertJson(['a' => 1, 'b' => 2]);
它会通过测试,但问题是如果我在响应中添加更多属性,它仍然可以通过测试,比如c=3 或其他。然后是 assertJsonFragment 方法,对于我的测试,它的行为相同,只是给出不同的错误消息。
assertJson 有问题吗?有没有其他方法可以做我想做的事情,即确保响应是这组特定的属性?
在 Laravel 5.6 和 5.7 上测试。
【问题讨论】: