Testing en Node.js con Mocha y Chai
Mocks y Stubs con Sinon.js
En el desarrollo de software, es común encontrarse con funciones o métodos que interactúan con servicios externos, bases de datos u otros módulos. Para probar estos componentes de manera aislada, podemos utilizar mocks y stubs. Sinon.js es una librería que facilita la creación de mocks, stubs y spies, y se integra perfectamente con Mocha y Chai. En este capítulo, explicaremos cómo utilizar Sinon.js para mejorar nuestras pruebas.
Conceptos Clave
Mocks
Un mock es un objeto que toma el lugar de un objeto real en el código, y está configurado para esperar ciertas llamadas y comportamientos. Un mock puede verificar si un método o función se ha llamado de la manera esperada.
Stubs
Un stub es una función que reemplaza temporalmente una función real y permite especificar su comportamiento, como devolver un valor predefinido o lanzar un error.
Spies
Un spy es una función que registra información acerca de las interacciones con otras funciones, como cuántas veces se ha llamado o con qué argumentos.
Instalación de Sinon.js
Puedes instalar Sinon.js en tu proyecto con el siguiente comando:
shell
Uso de Stubs con Sinon.js
Digamos que tenemos una función que realiza una llamada a una base de datos. Para probar esta función sin acceso a la base de datos, podemos usar un stub.
Ejemplo:
Supongamos que tienes una función obtenerUsuarioDeDB
que interactúa con la base de datos:
javascript
Queremos probar una función que utiliza obtenerUsuarioDeDB
, llamada procesarUsuario
:
javascript
Crea un stub para obtenerUsuarioDeDB
en una prueba:
javascript
Uso de Mocks con Sinon.js
Los mocks son útiles para verificar que una función se llame con ciertos parámetros. Supongamos que tenemos una función guardarUsuario
que guarda datos del usuario en la base de datos.
Ejemplo:
javascript
Ahora queremos probar otra función manejarUsuario
que llama a guardarUsuario
:
javascript
Crea un mock para guardarUsuario
en una prueba:
javascript
Uso de Spies con Sinon.js
Los spies son útiles para saber cómo y cuándo se llama a una función. Por tanto, ayudan a registrar la interacción de la función sin cambiar su comportamiento.
Ejemplo:
javascript
Conclusión
Mocks, stubs y spies son herramientas poderosas para realizar pruebas más aisladas y controladas, permitiéndote simular y verificar comportamientos específicos del código. Sinon.js proporciona una funcionalidad robusta para trabajar con estas herramientas junto con Mocha y Chai, mejorando así la efectividad y la fiabilidad de tus pruebas. En el próximo capítulo, exploraremos cómo manejar y probar funciones asíncronas en Node.js.
- Introducción al Testing en Node.js
- Instalación y Configuración de Mocha y Chai
- Conceptos Básicos de Testing
- Estructura de un Test con Mocha
- Asserts y Matchers con Chai
- Test Driven Development (TDD) con Mocha y Chai
- Mocks y Stubs con Sinon.js
- Testing de Funciones Asíncronas
- Testing de APIs RESTful
- Integración de Tests en el Proceso de CI/CD
- Pruebas de Carga y Rendimiento
- Buenas Prácticas en Testing
- Herramientas Complementarias para Testing
- Ejemplos Prácticos y Casos de Uso
- Conclusiones y Siguientes Pasos
