Version 4
supported
This version of Silverstripe CMS is still supported though will not receive any additional features.
Go to documentation for the most recent stable version.
Testing email within unit tests
Silverstripe CMS's test system has built-in support for testing emails sent using the Email class. If you are running a SapphireTest test, then it holds off actually sending the email, and instead lets you assert that an email was sent using this method.
use SilverStripe\Control\Email\Email;
public function MyMethod()
{
$e = new Email();
$e->To = 'someone@example.com';
$e->Subject = 'Hi there';
$e->Body = 'I just really wanted to email you and say hi.';
$e->send();
}
To test that MyMethod
sends the correct email, use the SapphireTest::assertEmailSent() method.
$this->assertEmailSent($to, $from, $subject, $body);
// to assert that the email is sent to the correct person
$this->assertEmailSent('someone@example.com', null, '/th.*e$/');
Each of the arguments ($to
, $from
, $subject
and $body
) can be either one of the following.
- A string: match exactly that string
null/false
: match anything- A PERL regular expression (starting with '/')