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

Метод assertInvalid

Метод assertInvalid применяется к HTTP-ответу в тестах Laravel и проверяет, что валидация запроса не пройдена для указанных полей. Он полезен для тестирования контроллеров, которые выполняют валидацию входящих данных. Метод принимает массив полей с ожидаемыми ошибками или просто список полей, для которых проверяется наличие ошибок валидации.

Синтаксис

<?php $this->post($url, $data)->assertInvalid($fields); ?>

Метод возвращает экземпляр TestResponse, позволяя строить цепочки вызовов. Параметр $fields может быть массивом с ключами - именами полей, и значениями - ожидаемыми сообщениями об ошибках, либо простым массивом полей для проверки наличия любых ошибок.

Пример

Давайте протестируем запрос на создание статьи с пустым заголовком:

<?php namespace Tests\Feature; use Tests\TestCase; class ArticleTest extends TestCase { public function test_article_creation_fails_with_empty_title() { $data = [ 'title' => '', 'content' => 'Some content', ]; $res = $this->post('/articles', $data); $res->assertInvalid(['title']); } } ?>

Пример

Давайте проверим ошибки для нескольких полей сразу:

<?php namespace Tests\Feature; use Tests\TestCase; class ArticleTest extends TestCase { public function test_article_creation_fails_with_empty_fields() { $data = [ 'title' => '', 'content' => '', ]; $res = $this->post('/articles', $data); $res->assertInvalid(['title', 'content']); } } ?>

Пример

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

<?php namespace Tests\Feature; use Tests\TestCase; class UserTest extends TestCase { public function test_user_creation_fails_with_invalid_email() { $data = [ 'name' => 'John', 'email' => 'not-email', 'password' => 'password', ]; $res = $this->post('/users', $data); $res->assertInvalid([ 'email' => 'The email must be a valid email address.', ]); } } ?>

Пример

Давайте проверим, что сообщение об ошибке содержит определённую подстроку:

<?php namespace Tests\Feature; use Tests\TestCase; class ProductTest extends TestCase { public function test_product_creation_fails_with_short_name() { $data = [ 'name' => 'A', 'price' => 100, ]; $res = $this->post('/products', $data); $res->assertInvalid([ 'name' => 'must be at least 3 characters', ]); } } ?>

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

true

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

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