据我了解,从阅读Angular testing docs开始,调用tick()
会刷新fakeAsync
块内的(受支持的)宏任务和微任务队列。在这种情况下,我假设调用tick()
等同于进行一些附加呼叫+调用flushMicrotasks()
。
问题是,在任何情况下我都应该使用:
it('should pass', fakeAsync(() => {
// given some setup...
doSomethingAsynchronous();
flushMicrotasks();
// do some assertions...
}));
代替
it('should pass', fakeAsync(() => {
// given some setup...
doSomethingAsynchronous();
tick();
// do some assertions...
}));
❓
答案 0 :(得分:0)
节选自here。
宏任务由setTimeout,setInterval,setImmediate等排队。 process.nextTick,Promises,MutationObserver等进行微任务处理。
因此,如果您使用的是setTimeouts,setInterval等,则使用tick();如果使用的是某些promise,则可以使用tick()或flushMicrotasks()。