Chuck's Academy

Testing JavaScript y DOM con Mocha

Pruebas asíncronas con Mocha

Las pruebas asíncronas son una parte esencial del testing en aplicaciones modernas, donde frecuentemente interactuamos con APIs, bases de datos, y otras operaciones que no son inmediatas. Mocha ofrece varias formas de manejar estas situaciones, facilitando la escritura de pruebas confiables para código asíncrono.

Manejando Pruebas Asíncronas con Mocha

Callbacks

Mocha permite especificar un parámetro done en la función de prueba. Este parámetro es una función que se debe llamar cuando el código asíncrono se complete.

Ejemplo con Callbacks

Supongamos que tenemos una función que obtiene datos de manera asíncrona y toma un callback:

javascript

Podemos escribir una prueba utilizando callbacks de la siguiente manera:

javascript

Promesas

Mocha también soporta promesas de manera nativa. Si la función de prueba retorna una promesa, Mocha esperará a que se resuelva o rechace.

Ejemplo con Promesas

Supongamos que tenemos una función que retorna una promesa:

javascript

Podemos escribir una prueba usando promesas de la siguiente manera:

javascript

Async/Await

El estilo async/await es una manera más moderna y legible de manejar el código asíncrono y está completamente soportado en Mocha.

Ejemplo con Async/Await

Usaremos el mismo ejemplo anterior, pero esta vez con async/await:

javascript

Manejando Errores en Pruebas Asíncronas

Es importante asegurarse de que Mocha capture cualquier error que ocurra durante las operaciones asíncronas.

Promesas Rechazadas

Para manejar promesas rechazadas, puedes utilizar .catch y asegurarte de pasar el error a Mocha:

javascript

Async/Await con try/catch

Cuando se usa async/await, se puede usar try/catch para manejar errores:

javascript

Pruebas de Funciones Asíncronas Dependientes de Terceros

Muchas veces, nuestras funciones asíncronas integran servicios de terceros. Usar sinon para "stubear" estas dependencias puede ayudar a mantener nuestras pruebas aisladas.

Ejemplo con Sinon y Promesas

Supongamos que tenemos una función que obtiene datos de una API de terceros:

javascript

Podemos stubear la llamada a la API con sinon para nuestras pruebas:

javascript

Conclusión

Mocha facilita el manejo de pruebas asíncronas utilizando callbacks, promesas y async/await. Estas herramientas son esenciales para probar el comportamiento de aplicaciones modernas que dependen de muchas operaciones asíncronas. Además, combinando Mocha con herramientas como Sinon, puedes lograr pruebas más robustas y controladas.

En el próximo capítulo, profundizaremos en cómo estructurar y organizar tus tests en Mocha para mantener un código de pruebas limpio y manejable.


Pregúntame lo que sea