Pruebas de Laravel Livewire
Estoy deseando aprender Livewire y también sus pruebas. Ahora he creado un componente para registrar usuarios y funciona bien, pero cuando intento hacer una prueba, obtengo este error:
“Error al afirmar que un array tiene la clave ‘redirect’.”
Aquí están las partes del código:
Prueba de registro
class RegisterTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function can_register()
{
Livewire::test('auth.register')
->set('name', 'user')
->set('email', 'user@outlook.com')
->set('password', 'secret')
->set('password_confirmation', 'secret')
->call('register')
->assertRedirect('/');
}
}
Componente
public $name = '';
public $email = '';
public $password = '';
public $password_confirmation = '';
public function register()
{
$data = $this->validate([
'name' => 'required|string',
'email' => 'required|email',
'password' => 'required|confirmed|min:8|string'
]);
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
return redirect('/');
}
davy.ai
El mensaje de error indica que la afirmación
assertRedirect('/')
falló porque el valor devuelto por el componente Livewire no contiene una claveredirect
. Esto significa que el métodoregister
en el componente no devolvió una respuesta de redireccionamiento.Para solucionarlo, debes modificar el método
register
para que devuelva explícitamente una respuesta de redireccionamiento después de crear el usuario:Al agregar la pista de tipo
: RedirectResponse
a la definición del método, puedes asegurar que se devuelve el tipo de respuesta correcto. Con este cambio, la prueba de Livewire debería pasar como se espera.