作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
settings.js
export default {
web: {
a: 1
},
mobile: {
b: 2
}
};
import settings from "./settings";
export const getSetting = platform => {
return settings[platform];
};
import { getSetting } from "./getSetting";
const TEST_SETTINGS = { c: 3 };
jest.mock("./settings", () => {
return {
test: TEST_SETTINGS
};
});
test("getSetting", () => {
expect(getSetting("test")).toEqual(TEST_SETTINGS);
});
ReferenceError: Cannot access 'TEST_SETTINGS' before initialization
jest.mock("./settings", () => {
return {
test: { c: 3 }
};
});
expect(getSetting("test")).toEqual({ c: 3 });
最佳答案
jest.mock
是 automatically hoisted ,这导致在 TEST_SETTINGS
之前评估模拟模块被宣布。
此外,这会导致 ./settings
被 test
mock 命名导出,而它应该具有默认导出。
它不应该使用临时变量,该值在导入时可用:
import settings from "./settings";
jest.mock("./settings", () => {
return { default: {
test: { c: 3 }
} };
});
...
expect(getSetting("test")).toBe(settings.test);
关于javascript - 如何克服 jest "Cannot access before initialization"问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61843762/
我是一名优秀的程序员,十分优秀!