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

Метод assertExactJson

Метод assertExactJson применяется к объекту ответа в тестах Laravel и выполняет строгую проверку JSON-структуры. Первым параметром передаётся массив ожидаемых данных, который должен полностью совпадать с JSON-ответом. При этом порядок ключей не важен, но все элементы должны присутствовать в точности, без дополнительных полей. Если данные не совпадают, тест завершается с ошибкой.

Синтаксис

<?php $response->assertExactJson(array $data); ?>

Пример

Проверим, что эндпоинт возвращает список статей в точном соответствии с ожидаемой структурой:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; class ArticleTest extends TestCase { public function test_exact_json_response() { $article = Article::factory()->create([ 'id' => 1, 'title' => 'article', 'content' => 'text', 'status' => 'published' ]); $response = $this->getJson('/api/articles/1'); $response->assertExactJson([ 'id' => 1, 'title' => 'article', 'content' => 'text', 'status' => 'published' ]); } } ?>

Результат выполнения кода:

"OK"

Пример

Сравним, как assertExactJson отличается от assertJson. При использовании assertJson допускаются дополнительные поля в ответе:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; class ArticleTest extends TestCase { public function test_json_with_extra_fields() { $article = Article::factory()->create([ 'id' => 1, 'title' => 'article', 'content' => 'text', 'status' => 'published', 'created_at' => '2026-01-01 12:00:00', 'updated_at' => '2026-01-01 12:00:00' ]); $response = $this->getJson('/api/articles/1'); // Это пройдёт успешно $response->assertJson([ 'id' => 1, 'title' => 'article' ]); // А это вызовет ошибку, так как в ответе есть дополнительные поля $response->assertExactJson([ 'id' => 1, 'title' => 'article' ]); } } ?>

Результат выполнения кода:

"Failed asserting that the JSON response has the exact structure"

Пример

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

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use App\Models\Post; class UserTest extends TestCase { public function test_exact_json_with_nested_data() { $user = User::factory()->create([ 'id' => 1, 'name' => 'user', 'email' => 'user@example.com' ]); $post = Post::factory()->create([ 'id' => 5, 'user_id' => 1, 'title' => 'post', 'content' => 'text' ]); $response = $this->getJson('/api/users/1'); $response->assertExactJson([ 'id' => 1, 'name' => 'user', 'email' => 'user@example.com', 'posts' => [ [ 'id' => 5, 'user_id' => 1, 'title' => 'post', 'content' => 'text' ] ] ]); } } ?>

Результат выполнения кода:

"OK"

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

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