El Unit Testing no debe ser tan difícil como parece

Te muestro algunos tips y mi perspectiva al probar una nueva funcionalidad.

hace 2 años   •   3 min de lectura

Por Andrés Tuñón
Es mucho mejor empezar a probar al resolver la funcionalidad

Estaba implementando unas pruebas unitarias y surgieron unos detalles que quiero resguardar en un artículo.

Por si no conoces lo que es Unit Testing, te dejo otro artículo que va más a las bases, acá solo mencionaré unos consejos.

Unit Testing eficaz en frontend
Explico desde mi experiencia la eficacia de múltiples herramientas de unit testing y la más completa

Pilóto Automático

Muchos empezamos a hacer pruebas unitarias como si se tratara de algo automático, sin sentido alguno y siguiendo tutoriales.

Realmente, la idea es pensar qué necesitas probar en un orden de prioridades; si lo haces automático, solo lo que lograrás es agobiarte y terminarás con bugs de igual forma.

De todas formas no servirá de nada
De todas formas no servirá de nada

Siempre hay que centrarse en los puntos claves del sistema comprobando lo que necesita el cliente.

Por ejemplo si se trata de mostrar un mensaje en medio de la pantalla:

  • Debes cortar/falsificar las dependencias de llamadas asincrónicas
  • Debes cortar/falsificar las dependencias de manejos de estados
  • Procurar revisar todo lo que involucra dicho mensaje en medio de la pantalla (temas de diseño o responsive design)

Obvio que si cortas las dependencias que involucran el mensaje ¿Qué rayos estás haciendo? ¿Qué estás probando? ¿Solo quieres revisar que Jest funcione? ¡Debes aprender a probar tanto como el código principal!

Es tu diseño o es la prueba

Las pruebas unitarias no deben ser tan difíciles, solo hay 2 opciones si se te están complicando:

  • Las dependencias de tu prueba unitaria se te están saliendo de las manos
  • El diseño de tu componente o unidad que estás probando es terrible

Al hacer la prueba debes tratar de aislar de forma sencilla; tampoco es quedarte una vida probando. No debes o deberías tener tantas dependencias si separaste todo bien.

Por último para asegurar un buen diseño es muy eficaz aplicar Test Driven Development (TDD), siempre se debe aplicar cuando se pueda.

Test-driven development

Esta es una metodología que va orientada a crear las pruebas unitarias primero y luego el código principal; es super complicado al principio, pero se debe empezar de a poco.

Provoca un buen diseño del sistema y sus dependencias; a continuación te lo resumo:

  • Piensas/Diseñas que quieres del componente y cómo puedes probar el componente que vas a crear.
  • Creas una prueba básica con parte de lo que quieres que logre el componente y fallará obviamente.
  • Escribes el código del componente y solo lo necesario para que la prueba pase, no tiene que ser perfecto.
  • Refactorizas/Mejoras el código sin que la prueba falle.
  • Repites y agregas más código.
TDD Proceso
TDD Proceso

Y bueno eso fue todo, les dejo unas referencias muy buenas que encontré.

Referencias

GitHub - mawrkus/js-unit-testing-guide: 📙 A guide to unit testing in Javascript
📙 A guide to unit testing in Javascript. Contribute to mawrkus/js-unit-testing-guide development by creating an account on GitHub.
Guia de Unit Testing y buenas prácticas
React Testing Library Examples
Escenarios clásicos al utilizar jest

Corre la voz

Sigue leyendo