node.js - 如何在茉莉花中测试包装在 setImmediate 中的调用
问题描述
我将业务逻辑包装在 setImmediate 中,如下所示:
// business logic
export async function myFunc() {
setImmediate(() => {
myModule.doStuff();
});
}
我想对 myModule.doStuff() 调用有所期待。但是我不能,因为在执行 setImmediate 之前测试代码就在调用堆栈上。如何对包含在 setImmediate 中的代码寄予期望?
解决方案
由于setImmediate是一个非标准方法,jasmine 不支持模拟它的时钟。
可以使用此方法代替 setTimeout(fn, 0) 方法来执行繁重的操作。
因此,你可以用setTimeout(fn ,0)
它来代替它,它们是等价的。然后,您可以使用jasmine.clock来模拟时钟。
更多信息,请参阅issue#866。