我正在尝试在同一测试文件中的多个jest.mock
调用之间重用变量。
jest.mock
调用由babel-jest
提升到顶部,因此通常不允许访问模拟函数范围之外的变量。但错误消息说:
这是防止未初始化的模拟变量的预防措施。如果确保需要懒惰的模拟,则允许以
mock
为前缀的变量名称。
因此,如果我在变量前面加上mock
,我不再收到错误,但这些值仍然设置为在模拟中undefined
。我不明白错误消息中的"懒惰需要"是什么意思。是否可以在jest.mock
调用之间共享变量?
可重现的示例:
const mockReusableValue = { x: 5 };
jest.mock('../someModule', () => {
console.log(mockReusableValue); // undefined
return {};
});
babel-jest
会将模块模拟提升到作用域的顶部,这意味着您可以在外部作用域中定义模拟前缀变量,并在模块模拟中重用它,如下所示
test.js
const mockData = 3;
describe('someModule`s someMethod returning mockData', () => {
jest.mock('./someModule', () => ({
someMethod: jest.fn().mockReturnValue(mockData)
}))
})
工作示例