我有一个在我的整个应用程序中使用的日志记录类,我正在尝试使用 Jest 模拟来模拟它。
这是我的代码:
const mockLogger = {
'error': jest.fn()
};
jest.mock('../../config/log', () => mockLogger);
我需要能够检查 log.error
是否已被调用,因此我需要声明 log
的模拟实现超出范围。但是我不断收到以下错误:
ReferenceError: mockLogger is not defined
20 | 'error': jest.fn()
21 | };
> 22 | jest.mock('../../config/log', () => mockLogger);
有趣的是,我有一段非常相似的代码可以在另一个项目中使用。我不明白为什么会收到此错误。
我知道这是范围界定的问题,但不知道该怎么办。对此的任何意见都会非常有帮助!
最佳答案
问题在于,jest.mock
调用在运行时被提升到测试文件的外部范围。所以你无法在测试内部使用任何变量。在你的情况下最简单的是:
jest.mock('../../config/log', () => ({
'error': jest.fn()
}));
关于node.js - 开 Jest ,没有拾取超出范围的模拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54859333/