【问题标题】:fakeAsync and tick when unit testing code with Promise and Observables使用 Promise 和 Observables 对代码进行单元测试时使用 fakeAsync 和打勾
【发布时间】:2017-07-06 22:26:25
【问题描述】:
我假设在使用 Promises 测试代码时,需要使用 fakeAsync/tick 组合来保证 Promise 被解析/拒绝。这是因为 tick 在调用时会耗尽微任务队列。
但是,Observables 呢?我们是否也应该使用 fakeAsync/tick 来保证调用 subscribe 处理程序?
看起来使用 Observables 的单元测试完成得很好,通知了所有订阅的 Observer 实例,没有 fakeAsync/tick 所以我不确定这是否需要。
谢谢
【问题讨论】:
标签:
unit-testing
angular
rxjs5
【解决方案1】:
迟到的答案(您现在可能已经想通了)。虽然如果其他人有同样的疑问,我想提一下。
正如下面的答案中所解释的,“每个可观察运算符使用完成其工作所需的最少异步性”。
Synchronicity in RxJS
所以这主要取决于我们使用什么 RxJs Operator。
假设我们在运行单元测试时使用 Subject/BehaviorSubject 在流中推送新值(我相信这是模拟基于 Observable 的数据存储实现的方法之一),然后 我们这样做不需要 fakeAsync 和 tick,因为订阅处理程序将被同步调用。