Estoy tratando de encontrar el mejor método para probar formularios en Laravel. Estoy usando Inertia y Laravel Fortify para cuentas de usuario.
Si ejecuto lo que estoy tratando de probar en el navegador web, funciona como se esperaba, sin embargo, cuando ejecuto la prueba, obtengo una respuesta de estado 419 con el error: falta de coincidencia del token CSRF.
De acuerdo con la documentación de Inertia en Laravel, maneja la protección CSRF por nosotros (supongo que es por eso que funciona esto manualmente en el navegador): https://inertiajs.com/csrf-protection
Aquí está mi código actual para probar el registro de un usuario:
$response = $this->get('/register') ->assertStatus(200); $response = $this->json('POST', '/register', [ 'name' => 'Example Name', 'email' => 'example@example.com', 'password' => 'password', 'password_confirmation' => 'password' ]); $response->assertCreated();Tampoco estoy seguro de si esta es la forma correcta de probar una solicitud POST desde un formulario, así que si esto es incorrecto, sugiera un mejor método para escribir una prueba para esto, o si es mejor usar Laravel Dusk para realizar esto. especie de prueba simulando al usuario rellenando el formulario.
Para descubrir que era un problema de CSRF, ejecuté:
$response->dump();en la prueba.
Cualquier sugerencia es muy apreciada.