Новое в Symfony 4.4: PHPUnit Assertions для почтовых сообщений

Новые компоненты Mailer и Mime были введены в Symfony 4.3 для замены предыдущего решения, основанного на SwiftMailer. В Symfony 4.4 улучшили их с помощью новых утверждений PHPUnit для проверки электронной почты.

Новые утверждения следуют той же философии, что и тестовые утверждения, представленные в Symfony 4.3, с длинными, но выразительными именами методов:

// tests/Controller/DefaultControllerTest.php
namespace App\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DefaultControllerTest extends WebTestCase
{
    public function testSomething()
    {
        $client = static::createClient();
        $client->request('GET', '/newsletter-signup');
        // ...

        $this->assertEmailCount(2);
        $this->assertEmailIsQueued($this->getMailerEvent(0));

        $email = $this->getMailerMessage(0);
        $this->assertEmailHeaderSame($email, 'To', 'fabien@symfony.com');
        $this->assertEmailTextBodyContains($email, 'Welcome to Symfony!');
        $this->assertEmailAttachementCount($email, 1);
    }
}

Вот полный список утверждений почтовой программы:

  • assertEmailCount()
  • assertQueuedEmailCount()
  • assertEmailIsQueued()
  • assertEmailIsNotQueued()
  • assertEmailAttachementCount()
  • assertEmailTextBodyContains()
  • assertEmailTextBodyNotContains()
  • assertEmailHtmlBodyContains()
  • assertEmailHtmlBodyNotContains()
  • assertEmailHasHeader()
  • assertEmailNotHasHeader()
  • assertEmailHeaderSame()
  • assertEmailHeaderNotSame()
  • assertEmailAddressContains()