Intermediate LevelLaravel
How do Contextual Attributes and app() service overrides assist automated testing?
❓ Interview Prompt: Explain Facade Fakes (Mail::fake(), Event::fake(), Queue::fake()), $this->travelTo() time travel, and mocking container services.
Laravel provides testing utilities that allow swapping real application services with fake test doubles:
Facade Fakes & Time Travel:
•
'Mail::fake()': Intercepts outbound emails, allowing assertions like 'Mail::assertSent(OrderShipped::class)'.
•
'$this->travelTo(now()->subYear())': Freezes or manipulates application time during tests!
Code Implementation Example
php
<?php
use AppMailWelcomeMail;
use IlluminateSupportFacadesMail;
test('welcome email is sent on user registration', function () {
Mail::fake();
// Trigger registration logic...
Mail::assertSent(WelcomeMail::class);
});💡Testing mail dispatch using Mail::fake() in Pest PHP test.
🎯 Interview Key Takeaway
Use Facade Fakes (Mail::fake, Queue::fake) and time travel helpers to write fast, isolated automated tests.
#Testing#Facade Fakes#Time Travel#Intermediate
Back to all Laravel Questions→