清除导入模块中的封装值 - Jest js
clear encapsulated value in imported module - Jest js
假设我正在导入 Jest 模块,例如:
let var;
export const getVar = () => {
if(var == null) {
var = Date.now()
}
return var;
}
我正在尝试为此模块进行单元测试,但是,在每个单元测试中我都必须重置“var”值。我试图在“beforeEach”方法上使用 require 来重新定义模块,但它不起作用。有谁知道如何像这样重置封装值?
使用旧的 require
语法和 resetModules
foo.js
let foo;
const getFoo = () => {
if (!foo) {
foo = "foo";
} else {
foo = "bar";
}
return foo;
};
module.exports = { getFoo };
foo.test.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
和 resetModules
foo.js
let foo;
export const getFoo = () => {
if (!foo) {
foo = "foo";
} else {
foo = "bar";
}
return foo;
};
foo.test.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");
});
假设我正在导入 Jest 模块,例如:
let var;
export const getVar = () => {
if(var == null) {
var = Date.now()
}
return var;
}
我正在尝试为此模块进行单元测试,但是,在每个单元测试中我都必须重置“var”值。我试图在“beforeEach”方法上使用 require 来重新定义模块,但它不起作用。有谁知道如何像这样重置封装值?
使用旧的 require
语法和 resetModules
foo.js
let foo;
const getFoo = () => {
if (!foo) {
foo = "foo";
} else {
foo = "bar";
}
return foo;
};
module.exports = { getFoo };
foo.test.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
和 resetModules
foo.js
let foo;
export const getFoo = () => {
if (!foo) {
foo = "foo";
} else {
foo = "bar";
}
return foo;
};
foo.test.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");
});