¿QUÉ ES FAKING EN LARAVEL?
Faking es una funcionalidad de Laravel que permite simular el comportamiento de ciertos servicios durante las pruebas, sin que realmente se ejecuten. Siendo muy útil para:- Evitar que se envíen emails reales
- Evitar que se disparen notificaciones reales
- Evitar que se procesen jobs en la cola
- Evitar subir archivos reales
- etc..
Principales usos de Faking en tests
Ejemplo práctico
// tests/Feature/RegistrationTest.php
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Notification;
public function test_user_registration()
{
Mail::fake();
Notification::fake();
$response = $this->post('/register', [
'name' => 'Juan',
'email' => 'juan@example.com',
// ...
]);
$response->assertRedirect();
// Verificar que se "envió" un email
Mail::assertSent(WelcomeMail::class, function ($mail) {
return $mail->hasTo('juan@example.com');
});
// Verificar que se envió una notificación
Notification::assertSentTo($user, NewUserNotification::class);
}
Ventajas del Faking
- No se contaminan sistemas externos como email, APIs, base de datos de producción, etc.
- Los tests son mucho más rápidos
- Se pueden hacer hacer assertions muy específicos sobre qué se envió/procesó
- Código más limpio y mantenible