Pages Menu
Categories Menu

Posted by on Mar 11, 2016 in General | 1 comment

Pruebas unitarias y TDD con NodeJS y Mocha (Parte 1). Entendiendo conceptos

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).

Ciclo TDD

Ciclo de vida TDD

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:

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):

mocha

Ejemplo Prueba con Mocha

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.

María Morales

María Morales

Practitioner at 233 Grados de TI
Interesada y apasionada en todo aquello que tenga relación con metodologías ágiles y calidad software, gestión de proyectos, modelos de procesos, DevOps y sobre todo en gestión de equipos.

Actualmente, colabora activamente con la Empresa y Comunidad 233, dando formación y mentoring ágil además de organizando eventos, charlas e iniciativas para difundir el conocimiento sobre Ingeniería del Software.

Profesionalmente dedicada al mentoring ágil en 233 Grados de TI, calidad software, testing ágil, a la implantación en importantes organizaciones de Scrum, agilidad, DevOps, Product Owner, peopleware, automatización de pruebas web y móviles con BDD, Calabash.

Certificada por la Scrum Manager como Scrum Manager con credenciales de profesora, entre otras certificaciones, como por ejemplo en GIT y GitHub.
María Morales

1 Comment

  1. Me gustaria saber como se complementa MOCHA y SuperTest de node.js y cual es la diferencia entre estos.

Post a Reply

Tu dirección de correo electrónico no será publicada.

Share This