Jest

Jest es un framework JavaScript para generar pruebas unitarias.

jest

¿Qué es Unit Testing?

En el desarrollo de aplicaciones es esencial hacer Tests Unitarios para garantizar el correcto funcionamiento del código. Una prueba unitaria verifica que una función hace lo que debe, además permite que la aplicación sea más robusta, pues si añadimos cambios en el código de la aplicación, los tests nos aseguran que no se rompe ninguna funcionalidad, dándonos mayor fiabilidad y confianza para desplegar la aplicación a los usuarios.

Existen varias herramientas como Vitest, Jest, Bun, etc. diseñadas para facilitar la configuración y ejecución de pruebas unitarias que nos ayudan a que el proceso de creación de pruebas sea eficiente y accesible incluso para desarrolladores con poca experiencia.

Jest

Jest es un framework de pruebas en JavaScript desarrollado por Facebook. Es conocido por ser “zero-config”, lo que significa que, en la mayoría de los casos, no es necesario realizar configuraciones complejas para comenzar a usarlo. Además, Jest proporciona herramientas y funciones integradas, como mocks y mediciones e informes de cobertura (coverage).

Jest es compatible con la mayoría de frameworks y bibliotecas de JavaScript, como React, Angular, Vue, y Node.js entre otras. Gracias a su capacidad de trabajar de manera aislada, asegura que cada prueba se ejecute en un entorno limpio, evitando interferencias entre pruebas.

Instalación de Jest

Para comenzar a usar Jest en tu proyecto, primero necesitas instalarlo utilizando npm. Ejecuta el siguiente comando en tu terminal:

npm install --save-dev jest

Esto instalará la librería como una dependencia de desarrollo en tu proyecto.

Ejemplo de Prueba Unitaria con Jest

Supongamos que tenemos una función que suma dos números. El código de la función podría ser el siguiente:

export const sum = (a, b) => a + b;

Ahora crearemos un archivo de prueba para verificar que la función sum funciona correctamente:

import { sum } from './sum';
test('suma de 1 + 2 debe ser 3', () => {
expect(sum(1, 2)).toBe(3);
});

Expect

En el ejemplo anterior hemos usado la función expect que sirve para comprobar que los valores cumplen ciertas condiciones. Expect abre la puerta a usar distintos matchers que son funciones que te permiten hacer distintas validaciones. Algunos ejemplos:

  • toBe(value)
  • toBeDefined(value)
  • toBeNull(value)
  • toContain(value)
  • toEqual()
  • not.toBe(value)

Puedes ver la lista completa de opciones.

Ejecutar el test unitario

Añade este código en el archivo package.json de tu proyecto:

{
"scripts": {
"test": "jest"
}
}

Para ejecutar las pruebas, utiliza el siguiente comando en tu terminal:

npm test

Esto ejecutará todas las pruebas en tu proyecto y mostrará los resultados en la consola. Si todo está configurado correctamente, deberías ver un mensaje indicando que las pruebas pasaron exitosamente.

PASS ./sum.test.js
✓ suma de 1 + 2 debe ser 3 (5ms)

Coverage

A veces nos puede interesar generar un archivo de cobertura de pruebas que nos indique qué porcentaje de código está testeado. Esto puede ser útil para conectar con otras aplicaciones de calidad de código como SonarQube, o simplemente para analizarlo nosotros mismos. Podemos ejecutar este comando: jest --coverage.

Conclusión

Jest es un framework muy versátil y fácil de usar para realizar pruebas unitarias en JavaScript. Hoy en día se considera el mejor framework para crear tests unitarios en grandes aplicaciones. Su configuración simple, velocidad, herramientas integradas para medir la cobertura del código y soporte para mocking lo convierten en una elección ideal para proyectos modernos. Si estás comenzando con las pruebas unitarias o buscando mejorar tu flujo de trabajo de desarrollo, Jest es una excelente opción para explorar.