NOTE: This is based off a video titled "Testing Email With Custom Assertions" that Jeffrey Way did on Laracasts.com. If you do not have an account on that site, then you should make one. It is an amazing resource. We have just taken that example & made it an easy to install package. Thanks Jeffrey!
PHPUnit mail assertions for testing email in Laravel.
Branch | Status | Coverage | Code Quality |
---|---|---|---|
Develop | |||
Master |
Install the package:
$ composer require spinen/laravel-mail-assertions
You mixin the assertions with the Spinen\MailAssertions\MailTracking
trait. You get the following assertions...
- seeEmailBcc
- seeEmailCc
- seeEmailContains
- seeEmailContentTypeEquals
- seeEmailCountEquals
- seeEmailDoesNotContain
- seeEmailEquals
- seeEmailFrom
- seeEmailPriorityEquals
- seeEmailReplyTo
- seeEmailSubjectContains
- seeEmailSubjectDoesNotContain
- seeEmailSubjectEquals
- seeEmailTo
- seeEmailWasNotSent
- seeEmailWasSent
NOTE: If there was more than 1 email sent, then the assertions look at the last email.
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use Spinen\MailAssertions\MailTracking;
class ExampleTest extends TestCase
{
use MailTracking;
/**
* A basic functional test example.
*
* @return void
*/
public function testBasicExample()
{
$this->visit('/route-that-sends-an-email')
->seeEmailWasSent()
->seeEmailSubject('Hello World')
->seeEmailTo('foo@bar.com')
->seeEmailEquals('Click here to buy this jewelry.')
->seeEmailContains('Click here');
}
}