Aplicar mockRestore en Jest: 3 ejemplos prácticos

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

Algunos de nuestros reconocimientos:

Premios KeepCoding

Las pruebas son fundamentales en el desarrollo de software, ya que nos permiten garantizar que nuestro código se comporta de la manera que esperamos. En el mundo de las pruebas JavaScript, Jest es una de las herramientas que más destaca y, en este artículo, vamos a centrarnos en una función muy útil: mockRestore en Jest.

Jest, una biblioteca de pruebas de JavaScript, es apreciada por su simplicidad y velocidad. Una de sus características más potentes es su sistema de funciones mock (o simuladas). Con Jest, podemos simular cualquier función y definir su comportamiento como mejor nos parezca. Esto nos permite crear pruebas más precisas y robustas.

Sin embargo, a medida que nuestras pruebas se vuelven más complejas, podemos encontrarnos con la necesidad de restaurar una función simulada a su estado original, ya sea para limpiar después de una prueba o para prepararnos para la siguiente. Aquí es donde mockRestore en Jest resulta invaluable, ya que esta función es una manera de resetear nuestras funciones mock a su estado inicial.

¿Qué es mockRestore en Jest?

Primero, vamos a entender qué es mockRestore en Jest y por qué debería importarte. Cuando usamos Jest para crear una función mock con jest.fn(), jest.spyOn() o jest.mock(), Jest crea una función mock que podemos manipular como queramos. Esto es genial para probar, ya que nos da mucho control sobre el comportamiento de nuestras funciones.

Pero ¿qué ocurre cuando necesitamos que nuestra función mock vuelva a su estado original después de manipularla en una prueba? Aquí es donde entra en juego mockRestore en Jest. Esta función resetea todas las implementaciones y llamadas a la función mock, pero solo si la función mock fue creada con jest.spyOn. En otras palabras, mockRestore en Jest nos permite restaurar nuestra función mock a su estado inicial.

Restaurando una función mockeada con Jest [Ejemplo 1]

Vamos a poner esto en contexto con un ejemplo práctico. Supongamos que tienes una función llamada getDatos que quieres espiar en tus pruebas.

const api = {
  getDatos: () => 'Datos reales...',
};

En tus pruebas, podrías espiar esta función y cambiar su implementación.

jest.spyOn(api, 'getDatos').mockImplementation(() => 'Datos mockeados!');

console.log(api.getDatos()); // Imprime: 'Datos mockeados!'

Pero ¿qué pasa si quieres que getDatos vuelva a su comportamiento original después de la prueba? Aquí es donde usarías mockRestore en Jest.

api.getDatos.mockRestore();

console.log(api.getDatos()); // Imprime: 'Datos reales...'

Como puedes ver, mockRestore en Jest te permite volver a la implementación original de la función, lo que puede ser útil en pruebas que necesitan la función original.

Uso con beforeEach [Ejemplo 2]

Supongamos ahora que estás cambiando la implementación de una función mock en cada prueba. Es posible que desees restaurar la función a su estado original antes de cada prueba. Para esto, puedes usar mockRestore en conjunto con beforeEach.

beforeEach(() => {
  api.getDatos.mockRestore();
});

test('prueba 1', () => {
  jest.spyOn(api, 'getDatos').mockImplementation(() => 'Datos mockeados para prueba 1');
  // Tu prueba aquí...
});

test('prueba 2', () => {
  jest.spyOn(api, 'getDatos').mockImplementation(() => 'Datos mockeados para prueba 2');
  // Tu prueba aquí...
});

Con este código, getDatos se restaurará a su implementación original antes de cada prueba.

Restaurar todas las funciones mockeadas [Ejemplo 3]

Finalmente, en algunos casos, es posible que desees restaurar todas las funciones mockeadas a la vez. Jest ofrece la función jest.restoreAllMocks para hacer justamente eso.

jest.spyOn(api, 'getDatos').mockImplementation(() => 'Datos mockeados!');

// Otras funciones mock aquí...

// Restaura todas las funciones mock a su implementación original
jest.restoreAllMocks();

Como puedes ver, mockRestore en Jest es una herramienta poderosa que te da más control sobre tus pruebas y te ayuda a mantener un código limpio y organizado.

Te invitamos a seguir aprendiendo

Ahora ya sabes cómo y por qué usar mockRestore en Jest. Te has sumergido en el fascinante mundo de las pruebas con Jest, pero queda mucho más por aprender. Si te interesa aumentar tus habilidades de desarrollo web y convertirte en un verdadero profesional del sector IT, te invitamos a nuestro Desarrollo Web Full Stack Bootcamp.

En KeepCoding, creemos en el poder de la educación y la tecnología para cambiar vidas. Esta formación intensiva e íntegra te proporcionará todas las habilidades que necesitas para sobresalir en el competitivo sector tecnológico, una industria que siempre tiene una alta demanda de profesionales y ofrece salarios muy competitivos. Aprenderás de forma teórica y práctica todo lo que necesitas saber sobre desarrollo web, desde el dominio de JavaScript hasta el uso eficaz de frameworks y herramientas de prueba, como Jest. ¡Pide más información e impulsa tu futuro ya mismo!

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