如何调试去抖动功能的Jest单元测试

时间:2019-08-21 15:56:26

标签: reactjs jestjs lodash webstorm

我具有以下功能:

myFunction = _.debounce((viewport) => {
    ...
    otherFunction();
    ...
    someOtherFunction();
    ...
}, 650)

我正在尝试通过玩笑来断言otherFunctionsomeOtherFunction是否已运行。为此,我想使用WebStorm的调试器检查功能流。

我尝试嘲笑_.debounce

_.debounce = jest.fn((fn) => fn);

即使我尝试在myFunction上添加间谍并且开玩笑地说该函数已运行,我也无法使调试器停止在该函数内部。

如果我尝试删除_.debounce函数,则调试器将成功停止。

有什么办法可以使这项工作成功吗?

2 个答案:

答案 0 :(得分:0)

这未经测试,但是我相信您必须在模拟实现中执行该功能:

_.debounce = jest.fn(fn => fn());

答案 1 :(得分:0)

我最终将函数逻辑移到了一个新函数myFunctionNoDebounce上,并且仅将旧的myFunction用作去抖动包装器。这样,我可以测试myFunctionNoDebounce,而我真的不需要测试myFunction

这当然不是最优雅的解决方案,但目前可以使用。我愿意提出更多建议,以更好地解决此问题。

myFunctionNoDebounce = (viewport) => {
    ...
    otherFunction();
    ...
    someOtherFunction();
    ...
}

myFunction = _.debounce((viewport) => {
    this.myFunctionNoDebounce(viewport)
}, 650)