El testing es uno de los conceptos más core de eXtremme Programming (XP). Ya lo decía el gran Kent Beck: Any program feature without an automated test simply doesn’t exist.
Curiosamente, JavaScript ha sido históricamente uno de los lenguajes con más frameworks de test y menos cultura de testing en su comunidad. Los frameworks han ido apareciendo y desapareciendo a la velocidad del rayo y, por fin hoy, podemos decir que tenemos una magnífica combinación de ellos que ha venido para quedarse.
Entonces, si todo ha mejorado tanto, ¿Cómo cubrimos estas necesidades de implementación de tests unitarios, de integración y de aceptación?
Pues con Jest como abanderado construir tests unitarios trabajando con matchers personalizados, creando mocks o comprobando snapshots de componentes visuales es ya algo sencillo y asequible.
A un segundo nivel y centrándonos en los tests de integración de componentes React, react-testing-library se presenta como una solución sencilla y que resuelve muchos de los problemas que teníamos con sus predecesores (aka enzyme).
Por último y a nivel del UI, lo que necesitaremos es disponer de una herramienta de diseño, depuración y ejecución de nuestros tests de accepción. Cypress es simplemente alucinante y reduce radicalmente el tiempo de construcción y mantenimiento de este tipo de tests, históricamente considerados pesados y muy frágiles. Y todo ello sin selenium!!! :)
¿Tienes ya ganas de verlo en funcionamiento sobre un ejemplo real? No te pierdas pues esta sesión repleta de código y tests en verde!!! :)