Desmitificando las pruebas de JavaScript

Mucha gente me ha enviado mensajes, confundida sobre dónde empezar con las pruebas. Como todo lo demás en software, trabajamos duro para crear abstracciones que faciliten nuestro trabajo. Pero esa cantidad de abstracción evoluciona con el tiempo, hasta que los únicos que realmente la entienden son aquellos que construyeron la abstracción en primer lugar. Todos los demás deben tomar los términos, las API y las herramientas al pie de la letra y luchar para que las cosas funcionen.

Una cosa que creo sobre la abstracción en el código es que la abstracción no es magia, es código. Otra cosa que creo sobre la abstracción en el código es que es más fácil aprender a hacer.

Imagínese que se le acerca un ingeniero menos experimentado. Tienen hambre de aprender, quieren tener confianza en su código y están listos para comenzar a realizar pruebas. Siempre preparados para aprender de usted, han escrito una lista de términos, API y conceptos que les gustaría que les defina:

  • Afirmación
  • marco de prueba
  • Las funcionesdescribeitbeforeEachafterEachtest
  • Simulacros/Talones/Dobles de prueba/Espías
  • Unidad/Integración/De extremo a extremo/Funcional/Accesibilidad/Aceptación/Pruebas manuales

Entonces…

¿Podrías recitar definiciones para ese ingeniero en ciernes? ¿Puede explicar la diferencia entre una biblioteca de aserciones y un marco de prueba? ¿O le resultan más fáciles de identificar que de explicar?

Este es el punto. Cuanto mejor se entienden estos términos y abstracciones, más eficaz es enseñarlos. Y si podéis enseñarles, también será más eficaz usándolos.

Ingrese un momento en el que se le enseñará a pescar a un ingeniero. ¿Sabías que puedes escribir tu propia biblioteca de aserciones y marco de prueba? A menudo pensamos que estas abstracciones están más allá de nuestras capacidades, pero no es así. Cada una de las bibliotecas y marcos de aserciones populares comenzaba con una sola línea de código, seguida de otra y luego otra. No se necesita ninguna herramienta para escribir una prueba sencilla.

He aquí un ejemplo:

const {sum} = require('../math')const result = sum(3, 7)const expected = 10if (result !== expected) {  throw new Error(`${result} is not equal to ${expected}`)}

Coloque eso en un módulo llamado test.jsy ejecútelo node test.jsy, puf, podrá comenzar a tener confianza en que la sumfunción del math.jsmódulo está funcionando como se esperaba. Ejecútelo en CI y podrá tener la confianza de que no se romperá cuando se realicen cambios en el código base.

Veamos cómo se vería un fallo con esto:

Aparentemente nuestra sumfunción es restablecer en lugar de sumar y hemos podido detectarlo automáticamente a través de este script. Todo lo que tenemos que hacer ahora es arreglar la sumfunción, ejecutar nuestro script de prueba nuevamente y:

¡Fantástico! El script salió sin error, por lo que sabemos que la sumfunción está funcionando. Ésta es la esencia de un marco de prueba. Hay mucho más (por ejemplo, mensajes de error más bonitos, mejores afirmaciones, etc.), pero este es un buen punto de partida para comprender los fundamentos.

Una vez que comprendas cómo funcionan las abstracciones a un nivel fundamental, probablemente querrás usarlas porque, oye, acabas de aprender a pescar y ahora puedes ir a pescar. Y tenemos algunas encuestas de pesca bastante fenomenales, herramientas disponibles para nosotros. Mi favorita es la plataforma de prueba Jest. Es increíblemente capaz, tiene todas las funciones y me permite escribir pruebas que me dan la confianza que necesito para no estropear cosas al cambiar el código.

Creo que los conceptos básicos son tan importantes que incluí un módulo completo sobre ellos en TestingJavaScript.com . Este es el lugar donde puedes aprender la forma inteligente y eficiente de probar cualquier aplicación de JavaScript. Estoy muy contento con lo que he creado para ti. Creo que te ayudará a acelerar tu comprensión de las herramientas de prueba y las abstracciones al darte la oportunidad de implementar partes desde cero. ¿El resultado (esperanzador)? Puedes comenzar a escribir pruebas que sean fáciles de mantener y que estén diseñadas para infundir confianza en tu código día tras día.

¡La venta anticipada está en marcha ahora mismo! ¡40% de descuento en todos los niveles! La venta finalizará en los próximos días, ¡así que consíguela lo antes posible!

PD: Pruebe esto: Tweet ¿Cuál es la diferencia entre un marco de prueba y una biblioteca de aserciones? En mi curso, no solo lo explicaré, ¡sino que construiremos el nuestro propio!

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion