设置.js
export default {
web: {
a: 1
},
mobile: {
b: 2
}
};
获取设置.js
import settings from "./settings";
export const getSetting = platform => {
return settings[platform];
};
getSettings.test.js
import { getSetting } from "./getSetting";
const TEST_SETTINGS = { c: 3 };
jest.mock("./settings", () => {
return {
test: TEST_SETTINGS
};
});
test("getSetting", () => {
expect(getSetting("test")).toEqual(TEST_SETTINGS);
});
Error
ReferenceError: Cannot access 'TEST_SETTINGS' before initialization
我相信这与吊装有关。有办法解决这个问题吗? jest 是否提供任何其他方法来实现这一目标?
我不想这样做。当模拟数据很大并且在多个测试中使用时,这并不好。
jest.mock("./settings", () => {
return {
test: { c: 3 }
};
});
expect(getSetting("test")).toEqual({ c: 3 });
jest.mock
is 自动吊装 https://jestjs.io/docs/en/manual-mocks#using-with-es-module-imports,这会导致之前评估模拟模块TEST_SETTINGS
被宣布。
另外,这会导致./settings
被嘲笑test
命名导出,而预计有默认导出。
它不应该使用临时变量,该值在导入时可用:
import settings from "./settings";
jest.mock("./settings", () => {
return { default: {
test: { c: 3 }
} };
});
...
expect(getSetting("test")).toBe(settings.test);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)