首页 > 解决方案 > 如何在茉莉花中测试包装在 setImmediate 中的调用

问题描述

我将业务逻辑包装在 setImmediate 中,如下所示:

// business logic
export async function myFunc() {

    setImmediate(() => {
        myModule.doStuff();
    });
}

我想对 myModule.doStuff() 调用有所期待。但是我不能,因为在执行 setImmediate 之前测试代码就在调用堆栈上。如何对包含在 setImmediate 中的代码寄予期望?

标签: node.jsjasmine

解决方案


由于setImmediate是一个非标准方法,jasmine 不支持模拟它的时钟。

可以使用此方法代替 setTimeout(fn, 0) 方法来执行繁重的操作。

因此,你可以用setTimeout(fn ,0)它来代替它,它们是等价的。然后,您可以使用jasmine.clock来模拟时钟。

更多信息,请参阅issue#866


推荐阅读