FAKING EN LARAVEL: QUÉ ES Y CÓMO UTILIZARLO EN PRUEBAS
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