当使用Promise和Observables测试代码时,使用fakeAsync和tick

时间:2017-03-12 13:25:04

标签: unit-testing angular rxjs5

我认为在使用Promises测试代码时,需要使用fakeAsync / tick组合来保证promises是resolve / rejects。这是因为tick在调用时会排出微任务队列。

然而,Observables怎么样?我们是否还应该使用fakeAsync / tick来保证调用订阅处理程序? 使用Observables的单元测试看起来很好,通知了所有订阅的Observer实例,没有fakeAsync / tick,所以我不确定是否需要它。

谢谢

1 个答案:

答案 0 :(得分:0)

迟到的答案(你现在可能已经想到了这一点)。虽然如果其他人有同样的疑问,我想提一下。

如下面的答案所解释,&#34;每个可观察的运算符使用执行其工作所需的最小异步性数量<#34;

Synchronicity in RxJS

所以它主要取决于我们使用的RxJs运算符。

让我们说,我们在运行单元测试时使用Subject / BehaviorSubject来推送流中的新值(我相信这是模拟基于Observable的数据存储实现的方法之一),然后< strong>我们不需要伪造异步并勾选,因为订阅处理程序将被同步调用。