设置.js
export default {
web: {
a: 1
},
mobile: {
b: 2
}
};
Run Code Online (Sandbox Code Playgroud)
获取设置.js
import settings from "./settings";
export const getSetting = platform => {
return settings[platform];
};
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
错误
ReferenceError: Cannot access 'TEST_SETTINGS' before initialization
Run Code Online (Sandbox Code Playgroud)
我相信这与吊装有关。有没有办法克服这个问题?玩笑是否提供任何其他方法来实现这一目标?
我不想这样做。当模拟数据很大并且在多个测试中使用时,这并不好。
jest.mock("./settings", () => {
return {
test: { c: 3 }
};
});
expect(getSetting("test")).toEqual({ c: 3 });
Run Code Online (Sandbox Code Playgroud)
jest.mock自动提升,这会导致在TEST_SETTINGS声明之前评估模拟模块。
此外,这会导致./settings使用命名导出来模拟test,而预计它会具有默认导出。
它不应该使用临时变量,该值在导入时可用:
import settings from "./settings";
jest.mock("./settings", () => {
return { default: {
test: { c: 3 }
} };
});
...
expect(getSetting("test")).toBe(settings.test);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5281 次 |
| 最近记录: |