Aplicando MockReturnValue en Jest [Guía práctica]

| Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si has estado trabajando con Jest para pruebas en JavaScript, seguramente has visto el término mock function o función simulada. En este post, profundizaremos en un aspecto específico de las funciones simuladas: MockReturnValue en Jest. Además, exploraremos MockReturnValueOnce para darle un poco más de flexibilidad a tus test.

MockReturnValue permite simular el comportamiento de una función en Jest. Es decir, en lugar de permitir que la función se ejecute normalmente, puedes fingir o mockear su comportamiento y controlar lo que devuelve. Esto es especialmente útil cuando se trata de funciones que tienen efectos secundarios, como las solicitudes a una API, las interacciones con una base de datos o la manipulación del DOM.

¿Qué es una función simulada o mock function?

Para hacer pruebas efectivas, necesitamos tener control sobre las funciones que estamos probando. Aquí es donde entran en juego las mock functions o funciones simuladas.

Una función simulada es básicamente una función que registra información sobre cómo se llama durante la ejecución del código. Nos permite simular comportamientos específicos de la función, como retornar valores específicos, implementar comportamientos personalizados y, en general, nos otorga un control más detallado sobre cómo se comporta nuestra función en las pruebas.

En Jest, las mock functions se crean utilizando jest.fn() o jest.mock(). Pero ¿cómo controlamos el valor que devuelve una función simulada? Aquí es donde MockReturnValue en Jest y mockReturnValueOnce entran en escena.

Por ejemplo, podrías tener una función llamada getUserName(), que normalmente hace una solicitud a una API y devuelve un nombre de usuario. Al escribir pruebas, no quieres hacer una solicitud real a la API, pero puedes usar MockReturnValue para fingir la respuesta de la API.

Controla el valor de retorno con MockReturnValue en Jest

La función MockReturnValue en Jest se utiliza para controlar lo que una función simulada devuelve cuando se llama. Veamos cómo funciona:

const mockFn = jest.fn();
mockFn.mockReturnValue('Hello, KeepCoding!');

console.log(mockFn()); // Imprime: Hello, KeepCoding!

En este ejemplo, mockFn es una función simulada. Utilizamos MockReturnValue en Jest para hacer que la función siempre devuelva el string 'Hello, KeepCoding!'. Ahora, cada vez que llamemos a mockFn(), recibiremos ese string.

Con MockReturnValue en Jest, puedes asegurarte de que tus pruebas son rápidas, consistentes y confiables. Puedes centrarte en probar el comportamiento de tu propio código, en lugar de depender de servicios externos. También puedes simular diferentes respuestas y comportamientos para probar todos los posibles escenarios de tu aplicación.

Da un paso más con MockReturnValueOnce

A veces, es posible que quieras que tu mock function devuelva diferentes valores en llamadas consecutivas. Esto se puede hacer con mockReturnValueOnce. Este método, como su nombre indica, hace que la función simulada devuelva un valor específico solo una vez, en la próxima llamada. Después de eso, volverá a su comportamiento normal.

const mockFn = jest.fn();
mockFn.mockReturnValueOnce('Hello, KeepCoding!');
mockFn.mockReturnValue('Hola, Mundo!');

console.log(mockFn()); // Imprime: Hello, KeepCoding!
console.log(mockFn()); // Imprime: Hola, Mundo!

En este ejemplo, mockFn devolverá 'Hello, KeepCoding!' la primera vez que se llame. En las llamadas siguientes, devolverá 'Hola, Mundo!'.

Reinicia y restaura con mockReset y mockRestore

Si quieres limpiar los llamados y las instancias de tu mock function, puedes usar mockReset(), pero si lo que necesitas es restaurar la implementación original de la función, mockRestore() es lo que estás buscando.

En resumen, MockReturnValue en Jest y mockReturnValueOnce son herramientas poderosas que nos permiten controlar cómo nuestras funciones simuladas se comportan durante las pruebas. Nos permiten diseñar pruebas más detalladas y precisas, lo que a su vez nos ayuda a escribir código más robusto y confiable.

Continúa aprendiendo en nuestro bootcamp

Si te ha gustado este paseo por el mundo de MockReturnValue en Jest, te encantará nuestro Desarrollo Web Full Stack Bootcamp en KeepCoding. Te enseñaremos de forma teórica y práctica desde lo más básico hasta lo más avanzado del desarrollo web y, lo que es más importante, aprenderás a pensar y a solucionar problemas como un verdadero desarrollador.

Recuerda que la industria tecnológica está hambrienta de profesionales competentes y, al finalizar esta formación íntegra de alta intensidad, estarás listo para triunfar en el mercado laboral IT. ¡Dale un cambio a tu vida, apúntate al bootcamp y sumérgete en el fascinante mundo del desarrollo web!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado