【问题标题】:jest not picking up out of scope mock variables开玩笑没有选择超出范围的模拟变量
【发布时间】:2019-07-18 10:50:06
【问题描述】:

我有一个在整个应用程序中使用的日志记录类,我正在尝试使用 jest mock 来模拟它。

这是我的代码:

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);

有趣的是,我有一段非常相似的代码可以在另一个项目中使用。我不知道为什么会出现这个错误。

我知道这是范围界定的问题,但不知道该怎么做。对此的任何意见都会很有帮助!

【问题讨论】:

标签: node.js variables mocking jestjs integration-testing


【解决方案1】:

问题是jest.mock 调用在运行时被提升到测试文件的外部范围。因此,您无法从测试内部使用任何变量。在您的情况下最简单的是:

jest.mock('../../config/log', () => ({
  'error': jest.fn()
}));

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 2019-12-28
    • 2023-02-03
    • 2021-11-19
    • 2018-05-31
    • 2017-08-16
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多