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

Метод assertJsonValidationErrors

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

Синтаксис

<?php $response->assertJsonValidationErrors($fields, $messages = []); ?>

Пример

Давайте проверим, что при отправке невалидных данных возвращаются ошибки для полей 'name' и 'email':

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class UserControllerTest extends TestCase { public function testUserCreationFailsWithInvalidData() { $res = $this->postJson('/api/users', [ 'name' => '', 'email' => 'invalid-email', 'password' => '123', ]); $res->assertJsonValidationErrors(['name', 'email']); } } ?>

Пример

Проверим наличие ошибки для одного поля 'password' с проверкой конкретного сообщения:

<?php namespace Tests\Feature; use Tests\TestCase; class AuthControllerTest extends TestCase { public function testPasswordValidationFails() { $res = $this->postJson('/api/register', [ 'name' => 'user', 'email' => 'user@example.com', 'password' => '123', ]); $res->assertJsonValidationErrors([ 'password' => 'The password must be at least 8 characters.' ]); } } ?>

Пример

Проверим несколько полей с указанием конкретных сообщений:

<?php namespace Tests\Feature; use Tests\TestCase; class ProductControllerTest extends TestCase { public function testProductCreationValidationErrors() { $res = $this->postJson('/api/products', [ 'title' => '', 'price' => -10, 'category' => 'invalid', ]); $res->assertJsonValidationErrors([ 'title' => 'The title field is required.', 'price' => 'The price must be at least 0.', 'category' => 'The selected category is invalid.', ]); } } ?>

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

"JSON response contains validation errors for all specified fields"

Пример

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

<?php namespace Tests\Feature; use Tests\TestCase; class PostControllerTest extends TestCase { public function testMultipleValidationErrorsForSingleField() { $res = $this->postJson('/api/posts', [ 'content' => '', 'tags' => ['a', 'b', 'c', 'd', 'e', 'f'], ]); $res->assertJsonValidationErrors([ 'content', 'tags.0', 'tags.1', ]); $res->assertJsonPath('errors.content.0', 'The content field is required.'); $res->assertJsonPath('errors.tags.0', 'The tags.0 field is required.'); } } ?>

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

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