@raphael_tillman
To test email sending in PHPUnit, you can follow these steps:
1 2 3 |
composer require phpunit/phpunit composer require symfony/mailer composer require symfony/event-dispatcher |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
use SymfonyComponentMailerTestConstraintEmailSent; use SymfonyComponentMailerTestEmailAssertions; use SymfonyComponentMailerTestInterceptorEmailInterceptor; use SymfonyComponentMailerTestTransportNullTransport; use SymfonyComponentMimeEmail; use PHPUnitFrameworkTestCase; class EmailSendingTest extends TestCase { // ... protected function setUp(): void { EmailAssertions::setMailerTransport(new NullTransport()); } public function testEmailSending() { // Create an instance of the email you want to send $email = new Email(); $email->from('[email protected]') ->to('[email protected]') ->subject('Test email') ->text('This is a test email'); // Send the email $emailInterceptor = new EmailInterceptor(); $emailInterceptor->intercept($email); $emailInterceptor->flush(); // Assert that the email was sent $this->assertThat(new EmailSent($email), new EmailSentConstraint()); } } |
1
|
vendor/bin/phpunit |
This will execute the test case and check if the email was sent correctly. If it was sent, the test will pass, otherwise it will fail.