JavaScript:
Escribiendo pruebas
Cómo hacerlo:
Enfoque Nativo (usando Jest)
Jest es un marco de prueba popular que proporciona una API amigable para escribir pruebas unitarias en JavaScript. Requiere una configuración mínima y viene con características como funciones simuladas, temporizadores y pruebas de instantáneas.
- Instalación:
npm install --save-dev jest
- Escribir una prueba simple:
Crea un archivo llamado sum.test.js
:
const sum = require('./sum'); // Supongamos que esta función simplemente suma dos números
test('suma 1 + 2 para igualar 3', () => {
expect(sum(1, 2)).toBe(3);
});
- Ejecutar tu prueba:
npx jest
Salida de Ejemplo:
PASS ./sum.test.js
✓ suma 1 + 2 para igualar 3 (5ms)
Probando Código Asíncrono
Jest facilita la prueba de promesas y la sintaxis async/await:
// asyncSum.js
async function asyncSum(a, b) {
return Promise.resolve(a + b);
}
// asyncSum.test.js
test('la suma asíncrona funciona', async () => {
await expect(asyncSum(1, 2)).resolves.toBe(3);
});
Usando Bibliotecas de Terceros (Mocha & Chai)
Mocha es otro marco de prueba popular, a menudo utilizado con la biblioteca de aserciones Chai para pruebas más expresivas.
- Instalación:
npm install --save-dev mocha chai
- Escribir una prueba con Mocha y Chai:
Crea calculate.test.js
:
const chai = require('chai');
const expect = chai.expect;
const calculate = require('./calculate'); // Un módulo de cálculo simple
describe('Calculate', function() {
it('debería sumar dos valores', function() {
expect(calculate.sum(5, 2)).to.equal(7);
});
});
- Ejecutar tus pruebas con Mocha:
Agrega un script en tu package.json
:
"scripts": {
"test": "mocha"
}
Luego ejecuta:
npm test
Salida de Ejemplo:
Calculate
✓ debería sumar dos valores
1 passing (8ms)
Estos ejemplos ilustran la escritura y ejecución básica de pruebas en JavaScript. Adoptar un marco de prueba como Jest o Mocha con Chai puede proporcionar una base sólida para pruebas robustas de aplicaciones, ayudando a asegurar que tu código funcione según lo previsto a través de actualizaciones y refactorizaciones.