Pruebas en JavaScript (Node.js): frameworks y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Pruebas en JavaScript (Node.js): frameworks y herramientas

Las pruebas de calidad son una parte esencial del desarrollo en Node.js. Permiten detectar errores en etapas tempranas, simplifican la refactorización y aumentan la confiabilidad de las aplicaciones. En el ecosistema de JavaScript existen numerosos frameworks y utilidades para realizar pruebas. En este artículo, examinaremos las herramientas principales, sus capacidades y proporcionaremos ejemplos prácticos.

1. Tipos principales de pruebas

Antes de elegir una herramienta, es importante entender qué tipos de pruebas vas a escribir:

  • Pruebas unitarias (Unit) — verifican funciones o módulos individuales de forma aislada.
  • Pruebas de integración — verifican la interacción entre varios módulos, bases de datos o APIs externas.
  • Pruebas End-to-End (E2E) — simulan las acciones del usuario en el navegador o en la aplicación completa.

2. Jest — framework universal de Facebook

Jest es el framework más popular para pruebas en JavaScript. Incluye todo lo necesario: test-runner, librería de aserciones (assertions), mocks y soporte integrado para cobertura de código.

Instalación:

npm install --save-dev jest

Ejemplo de una prueba unitaria simple para una función de suma:

// sum.js
function sum(a, b) {
  return a + b;
}
module.exports = sum;

// sum.test.js
const sum = require('./sum');

test('la suma de 1 + 2 es igual a 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Ejecución de las pruebas:

npx jest

Ventajas de Jest:

  • Configuración cero para proyectos en React y Node.
  • Ejecución automática en modo watch.
  • Mocks y spies integrados.
  • Soporte para código asíncrono (async/await, callbacks).

3. Mocha + Chai — combinación flexible

Mocha es un test-runner flexible que no impone una librería de aserciones. La mayoría de las veces se usa junto con Chai, una librería con sintaxis clara (should, expect, assert).

Instalación:

npm install --save-dev mocha chai

Ejemplo de prueba con Chai:

// calculator.js
function divide(a, b) {
  if (b === 0) throw new Error('Division by zero');
  return a / b;
}
module.exports = { divide };

// test.js
const { expect } = require('chai');
const { divide } = require('./calculator');

describe('Calculator', function() {
  it('should divide two numbers', function() {
    expect(divide(10, 2)).to.equal(5);
  });

  it('should throw error when dividing by zero', function() {
    expect(() => divide(10, 0)).to.throw('Division by zero');
  });
});

Ejecución:

npx mocha test.js

Mocha es especialmente útil cuando se necesita un ajuste fino de los informes y la integración con otras herramientas.

4. Supertest — pruebas de servidores HTTP

Supertest es una librería para pruebas de integración de servidores Express (y otros). Permite enviar solicitudes HTTP y verificar las respuestas.

Instalación:

npm install --save-dev supertest

Ejemplo de prueba para una aplicación Express:

// app.js
const express = require('express');
const app = express();
app.get('/hello', (req, res) => res.json({ message: 'Hello World' }));
module.exports = app;

// app.test.js
const request = require('supertest');
const app = require('./app');

describe('GET /hello', function() {
  it('responds with json', function(done) {
    request(app)
      .get('/hello')
      .expect('Content-Type', /json/)
      .expect(200)
      .then(response => {
        expect(response.body.message).toBe('Hello World');
        done();
      });
  });
});

Supertest se combina perfectamente con Jest o Mocha.

Recommendations