Version 3 end of life
This version of Silverstripe CMS will not recieve any additional bug fixes or documentation updates. Go to documentation for the most recent stable version.

Testing Email within Unit Tests

SilverStripe'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.

	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();
	}
	$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 '/')

Related Documentation

API Documentation