Skip to main content

6 etapas para refactorizar un caso de prueba de Jest

Escrito por

4 de septiembre de 2019

0 minutos de lectura

Una función poco conocida de Jest permite personalizar cómo se manejan los errores de aserción que muestra la consola cuando fallan las pruebas. Imagina el siguiente código de prueba, que necesita recorrer un objeto mediante programación para asegurarse de que las claves existan como se espera (usando la función expect):

Editor de código oscuro que muestra una prueba de Jest que verifica que los archivos JavaScript tengan las clases de aplicación correspondientes.

La prueba está bien escrita. Ahora, imagina qué pasa si alguien del equipo hace algunos cambios en el código: agrega un archivo en una parte y se olvida de agregarlo en otra parte importante del mismo proyecto, como asegurarse de que se exporte correctamente.

La próxima vez que se ejecute la prueba, fallará. Sin embargo, para la mayoría no será evidente por qué; y si acabas de empezar a trabajar con el código, probablemente ni siquiera sabrás qué se rompió. Pruébalo:

Editor de código oscuro que muestra un error en una prueba de Jest: validators should be exported, con Received: undefined y un error de aserción en la línea 13.

Por eso, Jest también requiere usar toHaveProperty() con expect, así:

Editor de código con tema oscuro que muestra JavaScript que obtiene el nombre de una clase de cada nombre de archivo y prueba la propiedad esperada.

Ahora, cuando falla una prueba, al menos queda más claro qué propiedad falta. Sin embargo, como puedes ver en la siguiente captura de pantalla, sigue siendo un poco críptico. ¿Qué podemos hacer? ?

Editor de código oscuro que muestra un error en una prueba de Jest: todas las clases de validación deben exportarse desde index.js.

En este punto, las anotaciones que ya tenemos quizá sean suficientes. El nombre de la prueba se explica por sí solo, como puedes ver. Pero solo tenemos un caso de prueba que falla y, al revisar el seguimiento de la prueba, no podemos determinar claramente qué validadores se usaron.

Refactoricemos el código:

Editor de código con tema oscuro que muestra pruebas de Jest para verificar que las clases de validación se exportan desde index.js

Ahora, cuando mi prueba pasa o falla, queda mucho más claro e intuitivo qué se probó exactamente, qué falló exactamente y por qué:

Salida de la terminal que muestra pruebas de Jest aprobadas para validadores en app.test.js, incluidos ValidateHost.js y ValidateHttps.js.

¡Mucho mejor! ???


Si te gusta Jest tanto como a mí (?) quizá también te interese leer algunos de mis otros artículos sobre Jest:

Si también te interesa la seguridad web, me encantaría conocerte en la comunidad de Slack de The Secure Developer o en Twitter, si eso es más lo tuyo.

Publicado en: