Pruebas unitarias con Mocha y Chai

En esta entrada vamos a explicar cómo llevar a cabo una batería de pruebas unitarias básicas para un conjunto de funciones ECMAScript. Para ello nos hemos apoyado en el framework de pruebas Mocha conjuntamente con la biblioteca de aserciones Chai y el editor de código Visual Studio Code como entorno de trabajo.

Las pruebas se han llevado a cabo en el entorno de ejecución Node.js y también en el navegador, ya que algunas funciones precisan el aporte de entrada de datos por parte del usuario y requieren el uso de métodos del objeto window.

La colección de funciones que queremos probar forman parte del fichero libreria.js.

Prueba en Node.js

Una vez tenemos instalado Node.js y el gestor de paquetes npm, iniciamos el proyecto con el comando npm init para crear el archivo package.json, estableciendo mocha como valor del atributo test command. Después instalamos los paquetes necesarios mediante con npm install --save-dev mocha y npm install --save-dev chai.

Las pruebas en Node.js se van a realizar en un fichero test.js. Al final del archivo libreria.js hay que añadir cada una de las funciones que se desean probar al array module.exports para poder exportarlas:

module.exports = {
    metrosAPulgadas,
    binomioAlCuadrado,
    generarRGB,
    generarRGBHex,
    tablaMultiplicar,
    tablaMultiplicarUL,
    potencia,
    factorial,
    factorialRecursivo,
    esInt,
    esImpar,
    esImparV2
 };

De esta manera manera, ya podemos importar la biblioteca en test.js. También recogemos en sendas constantes las funcionalidades assert y expect de Chai.

const libreria = require('./libreria.js');
const assert = require('chai').assert;
const expect = require('chai').expect;

A continuación ya tenemos todo listo para diseñar las pruebas unitarias. Para ejecutar el programa basta con escribir el comando npm test.

Prueba en navegador

La prueba en el navegador es similar a la que se realiza en el entorno de Node.js pero con algunos cambios. Para empezar hay que usar la plantilla HTML disponible en la página oficial de Mocha, que enlaza directamente a los scripts de las versiones más actualizadas de Mocha y Chai. Después hay que insertar manualmente un script que apunte a libreria.js y otro que haga lo propio con el nuevo fichero de pruebas test-browser.js.

En el fichero de pruebas podemos llamar a las funciones de libreria.js directamente por su nombre y añadir el objeto chai delante de la invocación de las funciones de Chai.

En el navegador podemos probar el funcionamiento de tres funciones que piden un número al usuario y devuelven dicho número si cumple con las condiciones solicitadas o null si usuario cancela o pulsa tecla Enter sin escribir nada.

Recursos