5 ventajas de usar mockClear en Jest

| Última modificación: 17 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Conoces mockClear en Jest? Tal vez ya sepas que los test son un componente crucial en cualquier proceso de desarrollo de software. Dentro de este universo, Jest se ha convertido en uno de los frameworks de pruebas más populares y versátiles para JavaScript. Una de las funciones que proporciona es mockClear y, en este post, te hablamos sobre ella.

¿Qué es mockClear?

mockClear es una función en Jest que limpia la información de todas las llamadas previas y los resultados de instancias de la función mock. Simplificando, mockClear te permite reiniciar tu función mock, así puedes comenzar de cero en cada prueba. Esto es crucial para garantizar que cada test se ejecuta de manera aislada, sin verse afectado por los resultados de otros test.

Ventajas de usar mockClear en Jest

Asegura el aislamiento entre test

Con mockClear en Jest puedes garantizar que un test no afectará a los resultados de los test siguientes. Esto es esencial para escribir test unitarios eficientes. Por ejemplo:

const mockFn = jest.fn();

test('primera prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(1);
});

test('segunda prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(1); // sin mockClear, esto fallaría
});

Mejora la legibilidad y el mantenimiento

La simplicidad es clave cuando estás escribiendo test. Los test complicados son difíciles de mantener y de leer. Usar mockClear en Jest los simplifica, ya que te permite concentrarte solo en lo que estás probando en ese momento.

Imagina que estás trabajando con una función mock que se llama varias veces en diferentes pruebas. Sin usar mockClear, cada prueba afectaría a las siguientes, haciendo que tus pruebas sean más complicadas de entender y mantener. Aquí está el código sin mockClear:

const mockFn = jest.fn();

test('primera prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(1);
});

test('segunda prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(2); // Esto es confuso. ¿Por qué 2 si solo se ha llamado una vez en esta prueba?
});

Ahora, veamos cómo mejoraríamos este código usando mockClear:

const mockFn = jest.fn();

test('primera prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(1);
  mockFn.mockClear(); // Limpiamos las llamadas de la función mock después de cada prueba
});

test('segunda prueba', () => {
  mockFn();
  expect(mockFn).toHaveBeenCalledTimes(1); // Ahora esto tiene sentido. Solo se ha llamado una vez en esta prueba.
});

En el segundo ejemplo, cada prueba es independiente de las demás y mucho más fácil de entender y mantener. Gracias a mockClear, te puedes concentrar en lo que cada prueba está evaluando sin preocuparte por las llamadas a la función mock en otras pruebas.

Flexibilidad con otras funciones mock

mockClear en Jest funciona en conjunto con otras funciones mock en Jest, como mockReturnValue y mockImplementation, lo que permite una mayor flexibilidad a la hora de configurar tus test.

Aquí tienes un ejemplo de cómo puedes usar mockClear junto con mockReturnValue y mockImplementation para obtener una mayor flexibilidad:

const mockFn = jest.fn();

mockFn.mockReturnValue('Valor por defecto');

test('test con mockReturnValue', () => {
  expect(mockFn()).toBe('Valor por defecto');
  mockFn.mockClear(); // Limpiamos las llamadas de la función mock
});

mockFn.mockImplementation(() => 'Nuevo valor');

test('test con mockImplementation', () => {
  expect(mockFn()).toBe('Nuevo valor'); 
  // Gracias a mockClear, no importa lo que ha pasado en las pruebas anteriores. Esta prueba solo se preocupa por la implementación actual.
});

En este ejemplo, cada prueba se configura de forma diferente gracias a mockReturnValue y mockImplementation. Usando mockClear, puedes asegurarte de que cada configuración no afecte a las demás pruebas, lo que te proporciona una mayor flexibilidad a la hora de escribir tus test.

Mejora el control sobre las pruebas

Otra ventaja es que mockClear en Jest te brinda un mayor control sobre tus pruebas. Te permite determinar cuándo y cómo se reinicia tu función mock, de modo que te asegura que cada test se ejecuta en las condiciones que tú decidas.

Permite test más precisos

Al limpiar todas las llamadas y resultados de instancias de la función mock, mockClear en Jest te permite hacer test más precisos. Puedes saber exactamente cuántas veces se llamó a una función mock en un test en particular.

Aprende más en nuestro bootcamp

La función mockClear en Jest es una herramienta increíblemente útil cuando se trata de escribir test con Jest. Proporciona aislamiento entre los test, mejora la legibilidad y el mantenimiento, ofrece flexibilidad con otras funciones mock, mejora el control sobre las pruebas y permite test más precisos. ¿Qué más podrías pedir?

Recuerda que dominar las pruebas unitarias y Jest es solo una parte del puzzle para convertirte en un exitoso desarrollador profesional. Si estás buscando un cambio en tu carrera y quieres entrar en un sector con alta demanda de profesionales, altos salarios y una estabilidad laboral que otros sectores no ofrecen, te invitamos a unirte al Desarrollo Web Full Stack Bootcamp de KeepCoding. ¿Estás listo para transformar tu vida? ¡Apúntate hoy y descubre cómo lograrlo en pocos meses!

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