Chuck's Academy

Testing JavaScript y DOM con Mocha

Mocking y stubbing con Sinon en Mocha

Cuando escribimos pruebas unitarias, es importante aislar el código que estamos probando para asegurarnos de que la prueba no depende de partes externas o de comportamientos impredecibles.

Aquí es donde entra en juego Sinon.js, una librería poderosa para el "mocking", "stubbing" y "spying" en pruebas de JavaScript. En este capítulo, aprenderemos cómo usar Sinon con Mocha para mejorar nuestras pruebas.

Instalación de Sinon

Primero, necesitamos instalar Sinon. Puedes hacerlo ejecutando el siguiente comando en la raíz de tu proyecto:

sh

Stubbing con Sinon

El "stubbing" nos permite reemplazar una función o método con una versión controlada y predecible. Esto es útil cuando queremos evitar efectos secundarios o garantizar que el código bajo prueba se comporte de una manera específica.

Ejemplo de Stubbing de Función

Consideremos el siguiente código en usuario.js:

javascript

Queremos probar una función que usa fetchUsuario, pero no queremos hacer llamadas reales a la API. Podremos stubbar fetchUsuario usando Sinon.

Escribir la Prueba con Stubbing

javascript

Stubbing en Funciones Asíncronas

Para funciones asíncronas, podemos devolver una promesa resuelta:

javascript
javascript

Mocking con Sinon

El "mocking" simula un objeto completo y permite establecer expectativas sobre cómo debería usarse. Los "mocks" son útiles para verificar interacciones específicas.

Ejemplo de Mocking en Sinon

javascript

Escribir la Prueba con Mocking

javascript

Usando Spies con Sinon

Los "spies" permiten observar el comportamiento de funciones sin reemplazarlas. Esto es útil para verificar si una función ha sido llamada y con qué argumentos.

Ejemplo de Spying

javascript

Conclusión

Sinon.js proporciona herramientas poderosas para stubbing, mocking y spying, permitiéndonos escribir pruebas unitarias más robustas y aisladas. La combinación de Sinon con Mocha y Chai nos permite cubrir un amplio rango de casos de pruebas y verificar todas las interacciones esperadas en nuestro código.

En el siguiente capítulo, veremos cómo realizar pruebas de interacciones del usuario con Mocha, implementando muchos de los conceptos que aprendimos aquí.


Pregúntame lo que sea