我有一个在整个应用程序中使用的日志记录类,我正尝试使用玩笑模拟它。
这是我的代码:
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);
有趣的是,我有一段非常相似的代码可以在另一个项目中工作。我不知道为什么会收到此错误。
我知道这是范围界定的问题,但不确定如何处理。任何有关此的输入确实会有所帮助!
答案 0 :(得分:0)
问题是在运行时,jest.mock
调用被提升到测试文件的外部范围。因此,您无法在测试内部使用任何变量。在您的情况下,最简单的方法是:
jest.mock('../../config/log', () => ({
'error': jest.fn()
}));