Páginas

sábado, 23 de enero de 2021

JavaScript: Ejemplo de prueba unitaria con Mocha y Chai

Mocha es un framework de pruebas para JavaScript. Se puede utilizar tanto cuando se ejecutan las funciones de JavaScript en Node, como si ejecutan en un browser.

Con Mocha se pueden escribir funciones que prueban las funciones de los sistemas web desarrollados. Esta práctica consigue automatizar las pruebas de manera que cada vez que se tienen repetir las pruebas sobre el código desarrollado solo es necesario "apretar un botón". Se obtienen automáticamente los resultados permitiendo saber al desarrollador si han ido bien o mal. En el caso de que haya habido resultados incorrectos de las funciones de prueba, estás indicarán exactamente en que parte del código se ha producido el resultado incorrecto y el motivo que lo ha provocado. Esta información es muy valiosa cuando estamos haciendo frente a miles o decenas de miles de líneas de código que están intimamente relacionadas. Muchas veces cambiar algo en una línea, resulta que provoca que falle algo en otra parte del código de forma inesperada. Esto es debido a el acoplamiento entre funciones, que no es deseable pero es inavitable. Las pruebas no resuelven al 100% este problema, pero ayudan mucho. Por ejemplo en las pruebas de regresión que sirven para comprobar que lo que estaba funcionado no ha dejado de funcionar cuando se modifica el código.

En este artículo se muestra un ejemplo de uso de Mocha para probar una función que obtiene usuarios desde el API Rest https://dummyapi.io/data/api . La función a probar es:

A esta función con Mocha se le va a construir una función de prueba. Esta función es:

Esta función de prueba contiene pruebas para el fichero readUser.js que se especifica con describe('readUsers: ', (). En este fichero hay una única función que es getResource y sus pruebas se especifican con describe('getResource', (). Sobre esta función se realizan 5 casos de prueba, cada uno de ellos descritos con it ('should... En should hay una autoexplicación textual del contenido de la prueba. A continuación se ejercita (ejecuta) la función y con expect y assert se comprueba el resultado de la misma. Es habitual utilizar alguna librería para mejorar la legibilidad de los expect y los assert con los frameworks de prueba. En este ejemplo se está usando Chai.

Para ejecutar la prueba se utiliza el comando:

Y el resultado de la prueba se muestra de la siguiente manera:

Conclusión

La construcción de pruebas automatizadas proporciona una red de seguridad a los sistemas. Esto se debe a que gracias a las pruebas los desarrolladores pueden modificar el código apoyandose en programas que desvelan si al cambiar alguna línea se ha arreglado algo pero se ha estropeado otra parte de forma imprevista. Así los sistemas se mantienen al día con mucho menos esfuerzo y se consigue mantenerlos firmes y robustos a lo largo del tiempo.

Agradecimientos

Este ejemplo lo he podido construir gracias a lo que he aprendido en un curso de Dimitris Loukas llamado JavaScript Testing Best Practices.

Código

El código se puede descargar en https://github.com/MarisaAfuera/exampleMochaChai


No hay comentarios:

Publicar un comentario