Chuck's Academy

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.


Pregúntame lo que sea