Тестирование Laravel Livewire

#laravel #unit-testing #laravel-livewire

Вопрос:

Я с нетерпением жду возможности изучить Livewire и его тестирование. Теперь я создал компонент для регистрации пользователей, и он работает нормально, но когда я пытаюсь выполнить тест, я получаю эту ошибку: Failed asserting that an array has the key 'redirect'.

Вот части кода:

Проверка регистрации

 class RegisterTest extends TestCase {  use RefreshDatabase;  /** @test */ public function can_register() {  Livewire::test('auth.register')  -gt;set('name', 'user')  -gt;set('email', 'user@outlook.com')  -gt;set('password', 'secret')  -gt;set('password_confirmation', 'secret')  -gt;call('register')  -gt;assertRedirect('/'); }  }  

Компонент

 public $name = ''; public $email = ''; public $password = ''; public $password_confirmation = '';  public function register() {  $data = $this-gt;validate([  'name' =gt; 'required|string',  'email' =gt; 'required|email',  'password' =gt; 'required|confirmed|min:8|string'  ]);   User::create([  'name' =gt; $data['name'],  'email' =gt; $data['email'],  'password' =gt; Hash::make($data['password']),  ]);   return redirect('/'); }  

Ответ №1:

Это довольно просто.

Добавьте следующий файл:

 -gt;assertHasNoErrors(['name', 'email', 'password']);  

до

 -gt;assertRedirect('/');  

линия, и вы увидите, что она потерпит неудачу. Это связано с тем, что ваша проверка говорит, что пароль должен состоять минимум из 8 символов, а в вашем тесте он равен 6 (вы использовали secret в качестве пароля).

Комментарии:

1. Это имеет смысл 😀 Спасибо, что теперь все в порядке.