#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. Это имеет смысл 😀 Спасибо, что теперь все в порядке.