En Node.js tenemos un montón de bibliotecas y framework para hacer testing. Las pruebas son una parte fundamental del desarrollo de software, ya que garantizan que nuestro código funcione como se espera y nos ayuda a detectar errores antes de que lleguen a producción.
En este artículo vamos a ver el módulo nativo node:test
, que es suficiente para cubrir las necesidades de proyectos pequeños y medianos.
Ejemplos del módulo Test
Escribir pruebas unitarias
El módulo node:test
nos permite definir y ejecutar pruebas de manera sencilla. Vamos a ver un ejemplo sencillo de cómo escribir pruebas unitarias utilizando este módulo:
// tests.mjs
import assert from 'node:assert';
import test from 'node:test';
test('that 1 is equal 1', () => {
assert.strictEqual(1, 1);
});
test('that throws as 1 is not equal 2', () => {
// throws an exception because 1 != 2
assert.strictEqual(1, 2);
});
En este ejemplo:
- Importamos los módulos necesarios:
assert
para realizar aserciones ytest
para definir las pruebas. - Se definen dos pruebas usando la función
test
. Cada prueba tiene una descripción como primer argumento y una función que contiene la lógica de la prueba como segundo argumento.- En la primera prueba, se utiliza
assert.strictEqual(1, 1)
para verificar que el número 1 es estrictamente igual a 1. - En la segunda prueba, se usa
assert.strictEqual(1, 2)
que intenta verificar si 1 es estrictamente igual a 2, lo cual es falso.
- En la primera prueba, se utiliza
Ejecutar las pruebas
Para ejecutar las pruebas, simplemente ejecuta el archivo tests.mjs
con Node.js:
node tests.mjs
El resultado de las pruebas se mostrará en la consola.
- Si todas las pruebas pasan, verás un mensaje indicando que todas las aserciones se han completado con éxito. ✔️
- De lo contrario, se mostrarán mensajes de error indicando qué pruebas han fallado y por qué motivo. ❌
Ejemplos adicionales de pruebas unitarias
Además de las pruebas básicas, aquí tienes algunos ejemplos adicionales que puedes agregar para cubrir más casos de uso:
test('Comprobando que true es verdadero', () => {
assert.strictEqual(true, true);
});
test('Comprobando que false es falso', () => {
assert.strictEqual(false, false);
});
test('Comprobando que 0 es falsy', () => {
assert.strictEqual(0, false);
});
test('Comprobando que "hello" es una cadena', () => {
assert.strictEqual(typeof "hello", 'string');
});
test('Comprobando que [1, 2, 3] contiene el número 2', () => {
assert.deepStrictEqual([1, 2, 3].includes(2), true);
});
test('Comprobando que {a: 1, b: 2} tiene la propiedad "a"', () => {
assert.strictEqual(Object.prototype.hasOwnProperty.call({a: 1, b: 2}, 'a'), true);
});
test('Comprobando que una función suma dos números correctamente', () => {
function add(a, b) {
return a + b;
}
assert.strictEqual(add(2, 3), 5);
});
Descarga el código
Todo el código de esta entrada está disponible para su descarga en Github