Identifica cuándo usar mockRejectedValue en Jest

Autor: | Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Alguna vez te has preguntado cómo lidiar con las pruebas de tus funciones asíncronas en Jest? mockRejectedValue en Jest es un método que nos permite simular una promesa rechazada, es decir, emular la situación en la que una llamada a una API falla. Al tener esta herramienta, podemos asegurarnos de que nuestra aplicación maneja correctamente estas situaciones.

Jest y las mock functions

En Jest, un mock o mock function es una función ficticia que se usa para reemplazar la verdadera función que estamos probando. Nos permite controlar el comportamiento de la función y verificar cómo interactúa con otras partes de nuestro código.

Jest proporciona una gran cantidad de métodos para trabajar con funciones simuladas. Entre estos, tenemos mockFn.mockReset() y mockFn.mockRestore(), que te permiten restablecer y restaurar la jest mock, respectivamente.

Pero ¿qué pasa cuando necesitas probar una función que rechaza una promesa? Aquí es donde entra en juego mockRejectedValue en Jest.

Utilizar mockRejectedValue en Jest

mockRejectedValue en Jest es un método que te permite simular el rechazo de una promesa. ¿Por qué querríamos hacer eso? Imagina que estás probando una función que hace una solicitud HTTP y quieres verificar cómo maneja los errores.

it('debería manejar errores', async () => {
  const mockError = new Error('¡Oh, no!');
  
  axios.get.mockRejectedValue(mockError);

  await expect(myFunction()).rejects.toThrow('¡Oh, no!');
});

Este sencillo bloque de código simula un error en nuestra solicitud HTTP y luego verifica si nuestra función lo maneja correctamente. Eso es mockRejectedValue en Jest en todo su esplendor.

¿Cuándo usar mockRejectedValue en Jest?

Esto nos lleva a la pregunta del millón: ¿cuándo se debe usar mockRejectedValue? Deberías usar mockRejectedValue en Jest siempre que necesites probar el modo en el que tu función maneja las promesas rechazadas.

Es especialmente útil cuando:

  1. Quieres probar la funcionalidad de manejo de errores de tu función.
  2. Estás probando una función que depende de otra que puede rechazar una promesa.
  3. Necesitas simular un error específico que se lanza cuando una promesa es rechazada.

El testing es una parte vital del desarrollo de software y Jest es una herramienta poderosa para hacerlo. El método mockRejectedValue en Jest es solo una de las muchas utilidades que Jest ofrece para que tus pruebas sean sólidas y resistentes.

Por ejemplo, podríamos tener una función que llama a una API para obtener información sobre un usuario y queremos asegurarnos de que, si esta llamada falla, nuestra aplicación no se bloquee, sino que muestre un mensaje de error útil.

it('debería mostrar un mensaje de error si la llamada a la API falla', async () => {
  const mockError = new Error('Error al obtener la información del usuario');
  
  axios.get.mockRejectedValue(mockError);

  await expect(myFunction()).rejects.toThrow('Error al obtener la información del usuario');
});

En este código, estamos utilizando mockRejectedValue para simular un error en nuestra llamada a la API y luego verificamos que nuestra función maneja correctamente este error.

¿Quieres aprender más?

¿Sabes qué es incluso más emocionante que conocer la teoría acerca de las mock functions? ¡Aprender a usarlas en situaciones de la vida real! En nuestro Desarrollo Web Full Stack Bootcamp te formarás a nivel teórico y práctico para convertirte, en pocos meses, en un gran profesional.

El mundo del desarrollo de software está en constante evolución y mantenerse al día con las últimas prácticas y herramientas es vital para tu éxito. Con nuestra metodología propia y nuestro temario totalmente actualizado, podrás lograr todos tus objetivos en el mundillo IT. ¿Estás preparado para darle un giro a tu vida y triunfar en este sector tan demandado? ¡Entra ahora para solicitar más información y descubre cómo impulsar tu futuro en poco tiempo!

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

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