访问"jest.mock"中的共享变量的正确方法是什么?



我正在尝试在同一测试文件中的多个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)
}))
})

工作示例

相关内容

最新更新