Digamos que estoy importando al módulo Jest como:
let var; export const getVar = () => { if(var == null) { var = Date.now() } return var; }
Estoy tratando de hacer pruebas unitarias para este módulo, sin embargo, en cada prueba unitaria tengo que restablecer el valor "var". Intenté redefinir el módulo usando require en el método "beforeEach" pero no funciona. ¿Alguien sabe cómo restablecer valores encapsulados como este?
require
y resetModules
foo.js
let foo; const getFoo = () => { if (!foo) { foo = "foo"; } else { foo = "bar"; } return foo; }; module.exports = { getFoo };
foo.prueba.js
beforeEach(() => jest.resetModules()); test("first", () => { const { getFoo } = require("./foo"); expect(getFoo()).toBe("foo"); }); test("second", () => { const { getFoo } = require("./foo"); expect(getFoo()).toBe("foo"); });
import
dinámica y resetModules
foo.js
let foo; export const getFoo = () => { if (!foo) { foo = "foo"; } else { foo = "bar"; } return foo; };
foo.prueba.js
import { jest } from "@jest/globals"; beforeEach(async () => { jest.resetModules(); }); test("first", async () => { const { getFoo } = await import("./foo.js"); expect(getFoo()).toBe("foo"); }); test("second", async () => { const { getFoo } = await import("./foo.js"); expect(getFoo()).toBe("foo"); });