Chai para JavaScript (Node.js): guía completa con ejemplos

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

1. ¿Qué es Chai y para qué sirve?

Chai es una librería de aserciones (assertion library) potente y flexible para el ecosistema JavaScript, diseñada para escribir tests. Proporciona al desarrollador un amplio conjunto de herramientas para verificar el comportamiento esperado del código. El objetivo principal de Chai es hacer que el proceso de escribir tests sea intuitivo, legible y expresivo, independientemente del estilo de testing que prefieras: el clásico TDD (Test-Driven Development) o el más moderno BDD (Behavior-Driven Development).

¿Para qué sirve Chai? En el desarrollo de software es fundamental asegurarse de que cada función, módulo o componente funcione exactamente como se espera. En lugar de verificar manualmente cada valor con if...else y lanzar excepciones, Chai ofrece una API elegante. Permite escribir aserciones que parecen frases en inglés: expect(foo).to.be.a('string') o assert.equal(3, 3). Esto simplifica enormemente la lectura, el mantenimiento y la depuración de los tests. Chai no es un test runner (como Mocha o Jest), sino que funciona junto a ellos, proporcionando la capa para verificar condiciones.

Chai es especialmente popular en el entorno Node.js, pero también se puede usar en el navegador. Soporta tres interfaces principales: expect (estilo BDD, con encadenamiento), should (estilo BDD, extendiendo prototipos) y assert (estilo TDD, clásico). Gracias a su modularidad y a una gran cantidad de plugins (por ejemplo, para trabajar con JSON, DOM, Promesas), Chai es una solución versátil para probar prácticamente cualquier código JavaScript.

2. Instalación

La instalación de Chai en un proyecto Node.js se realiza a través del gestor de paquetes npm. Se recomienda instalarla como dependencia de desarrollo (devDependency), ya que la librería no es necesaria en la compilación de producción.

npm install --save-dev chai

Si usas yarn:

yarn add --dev chai

Después de la instalación, puedes importar Chai en tu archivo de test. Normalmente se hace de una de estas dos formas:

// Importar todo el módulo (recomendado para Node.js)
const chai = require('chai');

// O, si usas módulos ES (type: "module" en package.json)
import chai from 'chai';

3. Inicio rápido

Escribamos un test sencillo usando Chai y el popular test runner Mocha. Primero, instala Mocha: npm install --save-dev mocha.

Crea un archivo test.js:

const chai = require('chai');
const expect = chai.expect; // Usamos el estilo BDD

// Función que vamos a probar
function sumar(a, b) {
    return a + b;
}

// Describimos el conjunto de tests (suite)
describe('Función sumar', function() {
    // Test específico (spec)
    it('debería sumar dos números correctamente', function() {
        // Aserción (assertion)
        expect(sumar(2, 3)).to.equal(5);
    });

    it('debería devolver un número', function() {
        expect(sumar(2, 3)).to.be.a('number');
    });
});

Ejecuta el test con el comando npx mocha test.js. Verás un informe verde indicando que los tests pasaron. Este ejemplo muestra la estructura básica: describe para agrupar tests, it para describir un test concreto y expect para verificar el resultado.

4. Métodos y funciones principales

Chai proporciona tres APIs principales: expect, should y assert. Veremos los métodos más usados con expect, ya que es el más popular y flexible.

4.1. expect(value).to.

Recommendations