El desarrollo guiado por pruebas, concretamente el que llamamos Test Driven Development (TDD), que es diferente del ATDD / BDD, es una una manera de trabajar que involucra tres prácticas: la primera de ellas, escribir las pruebas (unitarias) con anterioridad al código (Test First Development), luego implementar el código que pase esas pruebas y una vez escrito el código, la refactorización posterior al código desarrollado (te dejo un post sobre refactorización).
Para escribir los tests, generalmente se utilizan las pruebas unitarias (unit test). La idea de las pruebas unitarias es probar y verificar de manera aislada el funcionamiento de partes específicas de una aplicación, de tal manera que al ejecutar todas las pruebas unitarias se puede asegurar que todas las partes del código están funcionando de manera esperada.
No me extiendo más en esto, dado que ya hemos hablado en varias ocasiones de ello, te dejo aquí algunos enlaces:
- “Utilizamos la novedosa técnica de TDD”… ¿Cómo? ¿Novedosa? ¿Seguro?
- Simulando las dependencias en las pruebas unitarias. Dummies vs Stubs vs Mocks vs Spies vs Fakes
- ¿Cómo puedo saber si mis pruebas unitarias son efectivas? ¿Basta con medir la cobertura de pruebas unitarias?
- ¿Qué es un framework para hacer Mocks? ¿Para qué sirve eso de Mockito, PowerMock, etc.?
En esta serie de post me voy a centrar en hacer pruebas unitarias o TDD usando Mocha corriendo sobre NodeJS (veremos ahora qué es cada cosa).
Sobre Mocha…
Y como ya adelantaba antes, Mocha es un framework de pruebas para JavaScript que se ejecutan en NodeJS y nos ayuda a tener un marco de trabajo para realizar nuestras pruebas de manera ordenada. Mocha es el sucesor oficial de Expresso (otro framework de pruebas de JavaScript). Algunas características de Mocha son:
- Soporte para diferentes navegadores
- Informes de cobertura de código
- API Javascript para ejecutar pruebas.
- Soporte de Debugger para NodeJS.
A efectos prácticos, durante nuestro desarrollo, Mocha nos ofrecerá un entorno en el que agrupar nuestros tests y mostrar los resultados de los mismos.
Cada bloque de tests se delimita mediante un objeto de tipo «describe» mientras que cada caso a testear esta dentro de un objeto de tipo «it» como se puede ver en la siguiente imagen (veremos esto con más detalle en un caso práctico):
La primera línea de este código llama a la librería “assert”para comprobar una funcionalidad específica y poder realizar las «asserts» (se utiliza las clases Assert del espacio de nombres UnitTestingFramework).
La cuarta línea describe el nombre de la prueba unitaria.
La quinta línea verifica si la subcadena se encuentra dentro de la cadena.
Una vez escrita la prueba unitaria ejecutamos el siguiente comando $mocha y por el mismo terminal te mostrará si has completado o no el test (lo veremos más adelante). Te dejo aquí más información sobre Mocha, su wiki y su grupo de google.
En los post posteriores lo mostraré con más detalle mediante un caso práctico.
Hasta aquí el post de hoy, espero que os haya servido, ya sea para conocer má tecnologías por conocimiento, o que os puedan ayudar en vuestro trabajo diario, como bien decía antes, escribiré un caso práctico sobre lo que os he contado.
- Diario: cómo Javier Garzás evita quedarse obsoleto estudiando a un X10 con IA-Esteroides - 7 noviembre, 2024
- Si creas Historias de Usuario con IA ¿A quién pertenecen? ¿A ti o la IA? El mono Naruto te lo explica - 31 octubre, 2024
- HistorIAs de usuario y como a Maximiliano lo ENGAÑABAN con la IA y como una viejuna historia del 1500 le salvó - 24 octubre, 2024
Me gustaria saber como se complementa MOCHA y SuperTest de node.js y cual es la diferencia entre estos.