【问题标题】:Angular testing: tick vs flushMicrotasks in fakeAsync block角度测试:fakeAsync 块中的刻度与 flushMicrotasks
【发布时间】:2018-09-16 22:41:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    摘自文章here

    宏任务由 setTimeout、setInterval、setImmediate 等加入队列。 process.nextTick、Promises、MutationObserver 等微任务。

    因此,如果您使用 setTimeouts、setInterval 等,则使用 tick();如果您使用一些 Promise,则可以使用 tick() 或 flushMicrotasks()。

    【讨论】:

      猜你喜欢
      • 2020-08-27
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 2019-08-12
      • 2022-01-10
      • 2015-07-05
      • 1970-01-01
      • 2019-01-02
      相关资源
      最近更新 更多