据我从阅读 Angular 测试文档开始的理解,调用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...
}));
❓
本文摘录于此处。
宏任务按 setTimeout、setInterval、setImimmediate 等进行排队。 process.nextTick, Promises, MutationObserver, etc
.
因此,如果您使用的是setTimeouts,setInterval等,请使用tick((,如果您使用某些promises,则可以使用tick((或flushMicrotasks((。