就我对阅读 Angular testing docs 的理解而言,调用 tick()
刷新 fakeAsync
block 中的(支持的)宏任务和微任务队列。在这种情况下,我假设调用 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...
}));
❓
最佳答案
文章摘录 here .
macrotasks are enqueued by setTimeout, setInterval, setImmediate, etc. microtasks by process.nextTick, Promises, MutationObserver, etc.
因此,如果您正在使用 setTimeouts、setInterval 等,那么请使用 tick(),如果您正在使用一些 promise ,那么您可以使用 tick() 或 flushMicrotasks()。
关于javascript - Angular Testing : tick vs flushMicrotasks in fakeAsync block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358970/