Scaffolding de pruebas unitarias con JEST en JavaScript
Agregar pruebas a tu software ya no es una curiosidad más de aquellos programadores geeks. En la actualidad se hace cada vez más necesario implementar pruebas automatizadas y que estas estén ligadas a implementaciones de integración continua. El día de hoy, veremos cómo puedes agregar un scaffolding de pruebas unitarias con JEST en tus proyectos o librerías JavaScript tal y como se hace en un etorno profesional.
Requerimientos
- Tener configurado tu proyecto con npm. Es decir, que tengas un archivo package.json y puedas instalar paquetes mediante npm.
Si aún no tienes tu proyecto configurado con npm te invito a tomar lo necesario de este tutorial Crear librería en JavaScript instalable con NPM.
Configuración de la carpeta de tests
El primer paso consiste en crear una carpeta en donde se alojarán todos tus tests, por defecto esta carpeta suele llamarse tests.
mkdir tests
Instalación de JEST
Lo siguiente que debes hacer es instalar la última versión de jest. También es recomendable instalar al menos el loader de babel para jest para interpretar código como módulos ES y otros.
npm install --save-dev jest babel-jest @babel/preset-env
Crear la configuración de pruebas del proyecto
Ahora debes crear un archivo llamado jest.config.js que tenga la configuración de jest.
module.exports = {
verbose: true,
collectCoverage: true,
coverageDirectory: './coverage/js',
};
También debes crear otro archivo para la configuración de babel.
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
Y finalmente te recomiendo crear el siguiente alias para las pruebas.
"scripts": {
"test": "jest",
...
}
Creación de tu primera prueba unitaria
Hecho esto ya puedes crear tu primera prueba unitaria. Solo para efectos de tests se ha creado una aserción obvia. La idea es que como ya tienes autocargado tu proyecto, puedas testear tus componentes de software. Vamos entonces a crear el archivo Example.test.js en la carpeta tests.
test('Example test', () => {
const myBool = true;
expect(true).toBe(true);
});
Ejecución de las pruebas
Para ejecutar las pruebas en la clase creada anteriormente basta ejecutar el siguiente comando.
npm run test