【问题标题】:How to debug Jest unit test for a debounced function如何为去抖函数调试 Jest 单元测试
【发布时间】:2019-08-21 15:56:26
【问题描述】:

我有以下功能:

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

我正在尝试使用 jest 来断言 otherFunctionsomeOtherFunction 是否已运行。为此,我想使用 WebStorm 的调试器来检查函数流。

我试过嘲笑_.debounce

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

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

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

有什么办法可以做到吗?

【问题讨论】:

    标签: reactjs jestjs lodash webstorm


    【解决方案1】:

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

    这当然不是最优雅的解决方案,但它现在有效。我愿意接受更多建议以更好地解决此问题。

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

    【讨论】:

      【解决方案2】:

      这是未经测试的,但我相信你必须在你的模拟实现中执行这个函数:

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

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 1970-01-01
        • 2019-06-16
        • 2021-04-26
        • 1970-01-01
        • 2021-06-16
        • 2017-02-09
        • 2022-01-24
        • 1970-01-01
        相关资源
        最近更新 更多