角度测试:tickAsync块中的滴答vs刷新

时间:2018-09-16 22:41:56

标签: javascript angular unit-testing asynchronous angular-testing

据我了解,从阅读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...
}));

1 个答案:

答案 0 :(得分:0)

节选自here

  

宏任务由setTimeout,setInterval,setImmediate等排队。   process.nextTick,Promises,MutationObserver等进行微任务处理。

因此,如果您使用的是setTimeouts,setInterval等,则使用tick();如果使用的是某些promise,则可以使用tick()或flushMicrotasks()。