El valor de mockReset en tus pruebas 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

Si estás familiarizado con Jest, ya sabrás que es una potente herramienta para llevar a cabo las pruebas en tus aplicaciones JavaScript. Entre las diversas técnicas que Jest ofrece, el uso de mockfn mockReset destaca particularmente.

En el mundo del desarrollo web, las pruebas son una parte integral del ciclo de vida de la programación. Entre las herramientas de prueba disponibles, Jest se considera uno de los frameworks más populares para probar aplicaciones JavaScript.

Como hemos dicho, dentro de las funcionalidades de Jest existe un método llamado mockReset, que juega un papel vital y que todos los desarrolladores deben entender a fondo. Si has trabajado con pruebas, sabrás que las funciones mock son a menudo reutilizadas en diferentes pruebas. No obstante, cada prueba podría cambiar el comportamiento de la función mock, lo que podría llevar a resultados inesperados en las pruebas posteriores. Aquí es donde entra en juego el método mencionado, dado que asegura que cada prueba tiene un punto de partida consistente.

La importancia de mockReset

Para comprender el verdadero valor de mockReset, primero necesitas entender cómo funciona el mocking en Jest. Cuando creas una mock function, puedes controlar su comportamiento y rastrear cómo interactúa con tu código. Esto te permite crear pruebas altamente enfocadas y controladas que pueden probar aspectos específicos de tu aplicación de manera aislada.

Ahora, imagina que tienes una serie de pruebas que usan la misma mock function. ¿Qué pasa si una prueba cambia el comportamiento de la función y luego afecta a las pruebas que vienen después? Aquí es donde entra en juego mockReset.

¿Qué hace exactamente?

mockReset es un método en Jest que restablece toda la información sobre las llamadas a la mock function (mock calls) y restaura la implementación original de la misma. Esto significa que, independientemente de lo que sucedió en las pruebas anteriores, cada prueba puede comenzar con un lienzo limpio.

const mockFn = jest.fn();

mockFn.mockReturnValue('Valor por defecto');

test('primer test', () => {
  expect(mockFn()).toBe('Valor por defecto');
});

mockFn.mockReset(); // Restablecemos la función mock

test('segundo test', () => {
  expect(mockFn()).toBeUndefined();
});

Cómo usar MockReset en combinación con otras herramientas Jest

Una de las grandes ventajas de mockReset es que puedes combinarlo con otras herramientas y técnicas en Jest para crear pruebas más potentes y flexibles. Por ejemplo, puedes usar beforeEach con mockReset para asegurarte de que todas tus pruebas comienzan desde el mismo punto.

const mockFn = jest.fn();

beforeEach(() => {
  mockFn.mockReset();
});

// Tus test van aquí...

Este pequeño código asegura que la mock function se restablezca antes de cada prueba, eliminando cualquier posibilidad de que una prueba pueda interferir con otra. Esto es esencial para mantener la independencia de tus pruebas.

Ejemplo práctico

Pongamos un ejemplo. Supongamos que tienes una función mock que devuelve ‘Hola, mundo!’ por defecto. Sin embargo, en una prueba, cambias su comportamiento para que devuelva ‘¡Hola, Jest!’. Si no usas mockReset, las pruebas posteriores que esperan ‘Hola, mundo!’ fallarán.

const saludo = jest.fn().mockReturnValue('Hola, mundo!');

test('Prueba 1', () => {
  saludo.mockReturnValue('¡Hola, Jest!');
  expect(saludo()).toBe('¡Hola, Jest!');
});

// Sin mockReset, esta prueba fallará
test('Prueba 2', () => {
  expect(saludo()).toBe('Hola, mundo!');
});

Ahora, si lo utilizas después de la primera prueba, la segunda prueba pasará como se espera.

const saludo = jest.fn().mockReturnValue('Hola, mundo!');

test('Prueba 1', () => {
  saludo.mockReturnValue('¡Hola, Jest!');
  expect(saludo()).toBe('¡Hola, Jest!');
  saludo.mockReset();
});

// Con mockReset, esta prueba pasará
test('Prueba 2', () => {
  expect(saludo()).toBe('Hola, mundo!');
});

Como puedes ver, es una herramienta poderosa que ayuda a mantener la consistencia en tus pruebas y evita errores inesperados. Al dominar esta herramienta, puedes escribir pruebas más confiables y mantener tu código más saludable y libre de bugs.

mockReset es un método poderoso en Jest que te proporciona un mayor control sobre tus pruebas y te ayuda a evitar las interferencias entre pruebas. Cuando se utiliza correctamente, puede ser una herramienta invaluable en tu caja de herramientas de pruebas Jest.

Sigue aprendiendo con KeepCoding

Jest ofrece muchas más características y técnicas que puedes utilizar para crear pruebas más fuertes y eficaces. ¿Quieres dominarlas todas? Para lograrlo, te invitamos a unirte a nuestro Desarrollo Web Full Stack Bootcamp. Aquí, no solo aprenderás sobre Jest, sino también sobre muchas otras herramientas y tecnologías que te permitirán convertirte en un desarrollador web profesional y competente. ¡Da el primer paso hacia tu nueva vida y únete a KeepCoding hoy mismo!

Artículos ms leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

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