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

Метод assertUnprocessable

Метод assertUnprocessable применяется к объекту ответа в тестах Laravel и проверяет, что HTTP-ответ имеет статус 422 (Unprocessable Entity). Этот метод удобно использовать для проверки ошибок валидации данных, когда сервер не может обработать запрос из-за некорректных данных. В отличие от ручной проверки статуса, метод автоматически проверяет наличие ошибок валидации в структуре ответа.

Синтаксис

<?php $response->assertUnprocessable(); ?>

В качестве параметров метод ничего не принимает, но при неудачной проверке выбрасывает исключение и помечает тест как проваленный. Метод проверяет, что статус ответа равен 422 и что в ответе присутствует ключ 'errors' с ошибками валидации.

Пример

Давайте проверим, что при отправке запроса без обязательного поля 'title' сервер возвращает статус 422:

<?php namespace Tests\Feature; use Tests\TestCase; class ArticleControllerTest extends TestCase { public function test_validation_fails_without_title() { $data = [ 'content' => 'article content' ]; $res = $this->postJson('/api/articles', $data); $res->assertUnprocessable(); } } ?>

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

"Test passed"

Пример

Проверим валидацию нескольких полей одновременно при создании пользователя:

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

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

"Test passed"

Пример

Комбинируем assertUnprocessable с проверкой конкретных ошибок валидации:

<?php namespace Tests\Feature; use Tests\TestCase; class PostControllerTest extends TestCase { public function test_validation_errors_are_correct() { $data = [ 'title' => '', 'body' => 'short' ]; $res = $this->postJson('/api/posts', $data); $res->assertUnprocessable(); $res->assertJsonValidationErrors(['title', 'body']); } } ?>

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

"Test passed"

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

  • метод assertStatus,
    который проверяет конкретный HTTP-код ответа
  • метод assertJsonValidationErrors,
    который проверяет наличие ошибок валидации в JSON-ответе
  • метод assertValid,
    который проверяет успешную валидацию данных
  • метод postJson,
    который отправляет JSON-запрос и возвращает ответ
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить