【问题标题】:Testing intervalTimer from async and fakeAsync从 async 和 fakeAsync 测试 intervalTimer
【发布时间】:2018-05-13 17:15:40
【问题描述】:

关于 testing components with asynchronous services 的 Angular 测试指南部分说:

使用done 编写测试函数虽然比async 和fakeAsync 更麻烦,但它是一种可行且偶尔需要的技术。例如,在测试涉及intervalTimer 的代码时,不能调用async 或fakeAsync,这在测试异步Observable 方法时很常见。

有谁知道intervalTimer 是什么或者为什么不能从async 或asyncFake 测试它?

【问题讨论】:

    标签: angular typescript jasmine


    【解决方案1】:

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

    我在 Angular 的 GitHub 存储库上发布了一个问题。这是问题的链接:https://github.com/angular/angular/issues/20711

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

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 2019-04-25
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2018-04-10
      • 2019-02-18
      • 2018-04-01
      相关资源
      最近更新 更多