Я подготовил пример API с помощью Laravel. Всегда возвращает этот объект:
{
"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.