РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1210 of 1392 menu

Метод assertJson

Метод assertJson применяется к HTTP-тестовому ответу и проверяет, что JSON-ответ содержит указанные ключи и значения. Метод принимает один параметр - массив с проверяемыми данными. При этом порядок элементов не важен, а фактические данные могут содержать дополнительные поля, не указанные в проверке. Если проверка не проходит, тест считается неудачным.

Синтаксис

<?php $this->get($uri)->assertJson($data); ?>

Пример

Давайте проверим, что GET-запрос к эндпоинту возвращает JSON с указанными данными:

<?php namespace Tests\Feature; use Tests\TestCase; class UserTest extends TestCase { public function test_get_user_returns_json() { $res = $this->get('/api/user/1'); $res->assertJson([ 'id' => 1, 'name' => 'John Doe', 'email' => 'john@example.com' ]); } } ?>

Если ответ содержит все указанные ключи с соответствующими значениями, тест будет пройден успешно.

Пример

Метод assertJson проверяет только наличие указанных данных, игнорируя дополнительные поля. Проверим это на примере:

<?php namespace Tests\Feature; use Tests\TestCase; class PostTest extends TestCase { public function test_post_contains_required_fields() { $res = $this->get('/api/posts/5'); $res->assertJson([ 'title' => 'My first post', 'author_id' => 3 ]); } } ?>

Тест будет успешным, даже если JSON содержит дополнительные поля, например 'content' или 'created_at'.

Пример

Проверим наличие вложенных данных в структуре JSON:

<?php namespace Tests\Feature; use Tests\TestCase; class OrderTest extends TestCase { public function test_order_has_user_data() { $res = $this->get('/api/orders/10'); $res->assertJson([ 'id' => 10, 'user' => [ 'id' => 5, 'name' => 'Jane Smith' ] ]); } } ?>

Пример

Метод assertJson можно использовать для проверки списка элементов в JSON-ответе:

<?php namespace Tests\Feature; use Tests\TestCase; class ProductsTest extends TestCase { public function test_products_list_has_first_item() { $res = $this->get('/api/products'); $res->assertJson([ [ 'id' => 1, 'name' => 'Laptop' ] ]); } } ?>

В этом случае проверяется, что первый элемент массива содержит указанные поля.

Смотрите также

  • метод assertExactJson,
    который требует полного совпадения JSON-ответа
  • метод assertJsonPath,
    который проверяет значение по указанному пути
  • метод assertJsonFragment,
    который проверяет наличие фрагмента в JSON-ответе
  • метод assertJsonStructure,
    который проверяет структуру JSON-ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить