Chuck's Academy

Testing en Node.js con Jest

Mocks y Stubs en Jest

En este capítulo, exploraremos cómo utilizar mocks y stubs en Jest. Estas técnicas de testing son esenciales para simular comportamientos y dependencias, permitiéndote aislar la parte del código que deseas probar.

¿Qué son Mocks y Stubs?

  • Mocks: Son objetos falsos que imitan el comportamiento de objetos reales. Permiten controlar la manera en que las funciones y métodos son llamados y cómo responden.

  • Stubs: Son variantes de los mocks que reemplazan temporalmente una implementación con un comportamiento predefinido.

Mocks en Jest

Definiendo Mocks Manualmente

Puedes definir un mock manualmente para una función o módulo. Aquí hay un ejemplo simple:

javascript

Mocks Automáticos

Jest proporciona varias formas de crear mocks. Una manera efectiva es usar jest.fn para crear funciones mock.

javascript

Mocking de Módulos

Puedes hacer mock de módulos enteros utilizando jest.mock(). Por ejemplo, si tienes un módulo utils y quieres hacer mock de una función saludar:

javascript

Stubs en Jest

Los stubs en Jest son creados generalmente usando jest.fn. Puedes predefinir cómo debería comportarse una función.

javascript

Simulando Dependencias

A menudo, es necesario simular dependencias para pruebas aisladas. Por ejemplo, si una función depende de una llamada de API externa, puedes mockear esa dependencia.

javascript

Ejemplo Completo: Mocks y Stubs en Acción

Supongamos que deseamos probar una función que depende de otra función para obtener datos de una API:

javascript

Nuestro test usando mocks y stubs sería algo así:

javascript

[Placeholder para imagen: Diagrama que muestra la relación entre una función y sus dependencias siendo reemplazadas por mocks o stubs.]

Conclusión

El uso de mocks y stubs en Jest facilita el testing de unidades y componentes de manera aislada, permitiendo simular dependencias y controlar el comportamiento de funciones. En la próxima sección, exploraremos cómo manejar pruebas de funciones asíncronas en Jest, un aspecto crucial en aplicaciones Node.js.


Pregúntame lo que sea