Nuevo en Symfony 4.3: Mejores asertos para tests funcionales
Crear tests funcionales en Symfony es bastante sencillo gracias a las
utilidades que proporciona la clase WebTestCase
y gracias a los asertos de
PHPUnit. Sin embargo, para algunos casos de uso habituales (por ejemplo,
comprobar que la respuesta fue exitosa o que redirige a alguna URL) los métodos
assert____()
son demasiado básicos y requieren escribir mucho código.
De hecho, muchos programadores/as Symfony han creado sus propias utilidades para
simplificar los tests. Por eso en Symfony 4.3 hemos decidido agrupar los asertos
más útiles en un nuevo trait llamado
Symfony\Bundle\FrameworkBundle\Test\WebTestAssertionsTrait
. Como este trait
se incluye por defecto dentro de la clase WebTestCase
, solo tendrás que
actualizar a Symfony 4.3 para disponer de todos esos asertos.
Ejemplo para comprobar que la respuesta recibida es correcta:
// antes $this->assertSame(200, $client->getResponse()->getStatusCode()); // ahora $this->assertResponseIsSuccessful();
Ejemplo para comprobar que la respuesta redirige a una URL específica:
// antes $this->assertSame(301, $client->getResponse()->getStatusCode()); $this->assertSame('https://example.com', $client->getResponse()->headers->get('Location')); // ahora $this->assertResponseRedirects('https://example.com', 301);
Ejemplo para comprobar si un elemento contiene cierto texto:
// antes $this->assertContains('Hello World', $crawler->filter('h1')->text()); // ahora $this->assertSelectorTextContains('h1', 'Hello World');
Los nuevos asertos harán tu código más fácil de leer y escribir, mejorando tu productividad. Esta es la lista completa de nuevos asertos:
assertClientCookieValueEquals()
assertClientHasCookie()
assertClientNotHasCookie()
assertClientRawCookieValueEquals()
assertHttpCodeEquals()
assertInputValueEquals()
assertInputValueNotEquals()
assertPageTitleContains()
assertPageTitleEquals()
assertRequestAttributeValueEquals()
assertResponseCookieValueEquals()
assertResponseCookieValueNotEquals()
assertResponseHasCookie()
assertResponseHasHeader()
assertResponseHeaderEquals()
assertResponseHeaderNotEquals()
assertResponseIsSuccessful()
assertResponseNotHasCookie()
assertResponseNotHasHeader()
assertResponseRedirects()
assertRouteEquals()
assertSelectorContainsText()
assertSelectorExists()
assertSelectorNotContainsText()
assertSelectorNotExists()
Esta funcionalidad fue contribuida por Alex Rock y Fabien Potencier en el pull request #30813.
Fuente: New in Symfony 4.3: Better test assertions
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.