Nuevo en Symfony 4.4: Simplificados los tests de emails

Los componentes Mailer y Mime se publicaron en la versión Symfony 4.3 para reemplazar la anterior solución basada en SwiftMailer. En Symfony 4.4 los hemos mejorado para añadir nuevos asserts de PHPUnit para emails.

Los nuevos asserts siguen la misma filosofía que los asserts introducidos en Symfony 4.3, así que los nombres de sus métodos son largos pero expresivos:

// 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', '[email protected]');
        $this->assertEmailTextBodyContains($email, 'Welcome to Symfony!');
        $this->assertEmailAttachementCount($email, 1);
    }
}

Esta es la lista completa de nuevos asserts:

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

Esta funcionalidad fue contribuida por Fabien Potencier en los pull requests #32930 y #33203.

Fuente: New in Symfony 4.4: PHPUnit Assertions for Email Messages

Comentarios

Publicada el

17 de octubre de 2019

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Descargas totales de Symfony

3.408.501.808

Ver descargas en tiempo real

Síguenos en @symfony_es para acceder a las últimas noticias.