【问题标题】:Jest - mocking a function that uses callbacks开玩笑 - 模拟使用回调的函数
【发布时间】:2017-11-09 17:12:59
【问题描述】:

我无法让嘲笑工作。如果我提供一个只是方法调用的模拟实现,它就可以工作。但是,如果我用模拟回调实现替换它,它就会停止工作。我做错了什么?

// Module.js
export default class Module {
  static navigate(payload, callback) { ... }
}

// setupJest.js
jest.mock('../src/Module', () => ({
  navigate: jest.fn(console.log('test'))                    // works great
  navigate: jest.fn((payload, callback) => { callback() } ) // does NOT work
}));

【问题讨论】:

  • 一种解决方法是将第一条语句 (navigate: jest.fn(console.log('test')) ) 保留在原处 (setupJest.js),然后将第二条语句移动到实际测试中,格式如下:Module.navigate = jest.fn((payload, callback) => callback());

标签: javascript callback mocking jestjs


【解决方案1】:

console.log('test') 起作用的唯一原因是它在您定义模拟时执行,而不是在调用 navigate() 时执行。

只要你确定你的代码调用的是navigate()(我不确定是不是这样),那么你就不需要jest.fn()

jest.mock('../src/Module', () => ({                    
  navigate(payload, callback){ 
    console.log('is this really running?')
    callback();
  })
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2022-10-24
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多