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

assertHasErrors

Метод assertHasErrors класса Testable используется в тестах Livewire для проверки наличия ошибок валидации в компоненте. Метод вызывается после выполнения какого-либо действия, которое должно привести к появлению ошибок (например, отправка формы с некорректными данными). В качестве параметра можно передать ключи полей, для которых ожидаются ошибки.

Синтаксис

Livewire::test(Component::class) ->call('method') ->assertHasErrors();

Метод может принимать следующие параметры:

  • $keys - ключи полей, для которых проверяется наличие ошибок (передаётся строкой или массивом);
  • $rules - массив правил для проверки конкретных сообщений об ошибках (необязательный).

Пример

Пусть у нас есть компонент, который валидирует поле $email при отправке формы:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\Attributes\Rule; class LoginForm extends Component { #[Rule('required|email')] public $email; public $password; public function submit() { $this->validate(); // login logic... } public function render() { return view('livewire.login-form'); } } ?>
<form wire:submit="submit"> <input type="email" wire:model="email"> @error('email') <span>{{ $message }}</span> @enderror <button type="submit">Login</button> </form>

Теперь напишем тест, который проверяет, что при отправке пустого поля появляется ошибка:

<?php namespace Tests\Unit; use Tests\TestCase; use Livewire\Livewire; use App\Livewire\LoginForm; class LoginFormTest extends TestCase { public function test_empty_email_has_error() { Livewire::test(LoginForm::class) ->set('email', '') ->call('submit') ->assertHasErrors(['email']); } } ?>

Пример

Метод assertHasErrors может проверять несколько полей одновременно. Пусть в нашем компоненте валидируется как $email, так и $password:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\Attributes\Rule; class LoginForm extends Component { #[Rule('required|email')] public $email; #[Rule('required|min:6')] public $password; public function submit() { $this->validate(); // login logic... } public function render() { return view('livewire.login-form'); } } ?>

Тест, проверяющий наличие ошибок для обоих полей:

<?php namespace Tests\Unit; use Tests\TestCase; use Livewire\Livewire; use App\Livewire\LoginForm; class LoginFormTest extends TestCase { public function test_both_fields_have_errors() { Livewire::test(LoginForm::class) ->set('email', 'invalid') ->set('password', '123') ->call('submit') ->assertHasErrors(['email', 'password']); } } ?>

Пример

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

<?php namespace Tests\Unit; use Tests\TestCase; use Livewire\Livewire; use App\Livewire\LoginForm; class LoginFormTest extends TestCase { public function test_form_has_any_errors() { Livewire::test(LoginForm::class) ->set('email', '') ->set('password', '') ->call('submit') ->assertHasErrors(); } } ?>

Пример

Метод также позволяет проверять конкретные сообщения об ошибках с помощью передачи второго параметра $rules. Проверим, что для поля $email выводится правильное сообщение:

<?php namespace Tests\Unit; use Tests\TestCase; use Livewire\Livewire; use App\Livewire\LoginForm; class LoginFormTest extends TestCase { public function test_email_has_correct_error_message() { Livewire::test(LoginForm::class) ->set('email', 'not-email') ->call('submit') ->assertHasErrors([ 'email' => 'The email field must be a valid email address.' ]); } } ?>

Пример

Для проверки только наличия ошибки (без проверки текста) для конкретного поля можно передать ключ поля в виде строки:

<?php namespace Tests\Unit; use Tests\TestCase; use Livewire\Livewire; use App\Livewire\LoginForm; class LoginFormTest extends TestCase { public function test_password_field_has_error() { Livewire::test(LoginForm::class) ->set('password', '') ->call('submit') ->assertHasErrors('password'); } } ?>

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

  • метод assertHasNoErrors,
    который проверяет отсутствие ошибок валидации
  • метод assertSet,
    который проверяет значение свойства компонента
  • метод call,
    который вызывает метод компонента в тесте
  • метод set,
    который устанавливает значение свойства компонента в тесте
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить