尝试验证可观察对象在完成之前会发出一定数量的事件。这是伪代码:
o.pipe(count).subscribe(count=>
expect(count).toEqual(4));
有想法吗?
答案 0 :(得分:3)
count
运算符的工作方式如下:
计算源中的发射数量,并在源完成(source)时发射该数量
因此您可以像这样使用它:
obs.pipe(count()).subscribe(totalEmissions => expect(totalEmissions).toEqual(4))
请注意,您无法真正衡量在原始可观察物发生之前 发生了多少事件,因为如果未完成,则您还没有完成计数!
但是,您可以使用tap
记录每次发射的“索引”:
let count = 0
obs.pipe(tap(() => console.log("emitted! Index: " + count++))).subscribe(obsValue => {/*...*/})
我不确定您的用例是什么,但这就是您的使用方式。