Jest - 模拟使用回调的函数

时间:2017-11-07 10:25:50

标签: javascript callback mocking jest

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

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

1 个答案:

答案 0 :(得分:0)

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

只要您确定您的代码正在调用navigate()(我不确定),那么您就不需要jest.fn()

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