6 razones para usar MockLastCall en Jest

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

Algunos de nuestros reconocimientos:

Premios KeepCoding

Si estás leyendo esto, probablemente ya tienes cierta experiencia con las pruebas en Jest. Si quieres seguir avanzando en tu dominio sobre esta herramienta, necesitas conocer MockLastCall en Jest, un método que nos ofrece un control extraordinario sobre nuestras funciones de prueba.

¿Qué es MockLastCall en Jest?

Primero, un poco de contexto. MockLastCall es un método de la librería Jest que permite acceder a la última llamada realizada a una función mockeada y manipular su comportamiento.

const mockFunc = jest.fn();
mockFunc.mockLastCall.mockReturnValue(value);

Razones para usar MockLastCall en Jest

Mayor control sobre tus pruebas

El control es clave en las pruebas unitarias. Cuanto más control tengas sobre tu entorno de prueba y tu código, más precisas serán tus pruebas. MockLastCall en Jest te permite especificar exactamente qué debe devolver la última llamada a tu función mockeada, proporcionándote ese nivel extra de control.

mockFunc.mockLastCall.mockReturnValue('Hello, KeepCoding!');

Supongamos que estás trabajando en un proyecto de comercio electrónico y tienes una función, getProduct, que interactúa con una API para obtener detalles de un producto en base a su ID.

function getProduct(productId) {
  // realiza una llamada a la API y devuelve los detalles del producto
}

Queremos probar esta función sin hacer llamadas reales a la API, por lo que decidimos mockearla. Aquí es donde mockLastCall demuestra su valor. Imagina que necesitas probar una situación en la que getProduct se llama varias veces y cada vez devuelve un producto diferente. Sin mockLastCall, las cosas podrían complicarse, pero con esta función la solución es sencilla:

const getProduct = jest.fn();

test('debería devolver el producto correcto para cada llamada', () => {
  getProduct.mockReturnValue({ id: 1, name: 'Producto A' }); // Por defecto, devolverá 'Producto A'
  expect(getProduct(1)).toEqual({ id: 1, name: 'Producto A' });

  getProduct.mockLastCall.mockReturnValue({ id: 2, name: 'Producto B' }); // Para la última llamada, devolverá 'Producto B'
  expect(getProduct(2)).toEqual({ id: 2, name: 'Producto B' });

  getProduct.mockLastCall.mockReturnValue({ id: 3, name: 'Producto C' }); // Para la última llamada, devolverá 'Producto C'
  expect(getProduct(3)).toEqual({ id: 3, name: 'Producto C' });
});

En este ejemplo, cada vez que llamamos a getProduct estamos especificando qué debe devolver la última llamada. De este modo, tenemos un control absoluto sobre nuestra función mockeada, lo que nos permite crear pruebas más precisas y efectivas.

Pruebas más flexibles

Con mockLastCall en Jest puedes adaptar el comportamiento de tu función mockeada en función de las circunstancias de tu prueba. Esto significa que tus pruebas serán más flexibles y podrán cubrir un mayor número de casos.

mockFunc.mockLastCall.mockResolvedValue(value);

Mejor simulación de comportamiento

MockLastCall en Jest te permite simular mejor el comportamiento de la función que estás mockeando, ya que puedes adaptar la respuesta de la función a cada llamada. Esto te permite probar cómo tu código maneja diferentes respuestas de la misma función.

mockFunc.mockLastCall.mockImplementation(() => 'Custom value');

Facilita la depuración

Gracias a mockLastCall en Jest, puedes tener un registro de lo que devolvió la última llamada a tu función mockeada, lo cual facilita la depuración en caso de que algo vaya mal en tus pruebas.

console.log(mockFunc.mock.calls[mockFunc.mock.calls.length - 1]);

Mayor consistencia en las pruebas

MockLastCall asegura que tus funciones mockeada devolverán el valor correcto, sin importar cuántas veces se llamen. Esto garantiza la consistencia en tus pruebas.

mockFunc.mockLastCall.mockReturnValueOnce('Hello').mockReturnValue('Goodbye');

Simula respuestas asíncronas

Con mockLastCall en Jest, también puedes simular respuestas asíncronas, lo cual es crucial si estás probando código que interactúa con API o realiza otras tareas asíncronas.

mockFunc.mockLastCall.mockResolvedValue('Async response');

Te enseñamos más

MockLastCall en Jest es una herramienta poderosa que te permite tomar el control total de tus pruebas en Jest. No solo hace tus pruebas más flexibles, sino que también te ayuda a simular comportamientos más precisos, facilita la depuración, garantiza la consistencia y te permite simular respuestas asíncronas.

Si estás buscando formas de mejorar tus habilidades de prueba y llevar tus pruebas Jest al siguiente nivel, te recomendamos que le eches un vistazo a mockLastCall. Y si estás buscando dar un salto gigante en tu carrera de desarrollo, considera unirte al Desarrollo Web Full Stack Bootcamp de KeepCoding, la formación con la que solo necesitarás unos meses para convertirte en todo un profesional. ¡Pide información ahora e impulsa tu futuro!

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