测试 async 和 fakeAsync 的intervalTimer

Wil*_*arp 5 jasmine typescript angular

Angular 测试指南中有关使用异步服务测试组件的部分指出:

使用 编写测试函数虽然比和done更麻烦,但却是一种可行且有时是必要的技术。例如,在测试涉及 的代码时,您不能调用或,这在测试异步方法时很常见。asyncfakeAsyncasyncfakeAsyncintervalTimerObservable

有谁知道什么intervalTimer是或为什么不能从async或进行测试asyncFake

Wil*_*arp 2

intervalTimer有可能引用setInterval或任何其他计时器功能,并且它不能与async或 一起使用的原因fakeAsync是因为async(根据我的理解)通常使用whenStable上的函数ComponentFixture,并且whenStable永远不会真正被调用,因为计时器承诺永远不会完成。使用fakeAsync实际上会抛出一个错误,因为它尝试同步执行测试,但当它完成时,它检测到仍然有一个承诺尚未解决,因此它会抛出一个错误。

我通过在 Angular 的 GitHub 存储库上发布问题得到了这个信息。这是该问题的链接:https ://github.com/angular/angular/issues/20711

关于 的部分whenStable不在那个问题中,但根据我自己的研究,它看起来像whenStableasync通常一起使用。