如何测试返回的可观测对象是否为空 [英] How to test if returned Observable is EMPTY
本文介绍了如何测试返回的可观测对象是否为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个在一种情况下返回EMPTY
可观测对象的效果。我正在尝试测试此案例,但似乎想不出如何测试EMPTY
可观察性?
我的代码如下:
效果:
effect$ = createEffect(() =>
this.actions$.pipe(
ofType(someAction),
mergeMap(([action]) => {
if (someCondition) {
return EMPTY <-- this is what I am trying to test
}
return someServiceCall.pipe(
map((offers) => //dispatch some action,
catchError((error: string) => // dispatch another action),
)
}),
),
)
这是我的单元测试尝试,但是失败了
Error: Timeout - Async function did not complete within 5000ms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL)
。
考虑到测试中已满足条件:
it('should return EMPTY when ...', (done) => {
actions$ = of(someAction)
effects.effect$.subscribe((res) => {
expect(res).toEqual(never)
done()
})
})
如果返回的是of(null)
而不是EMPTY
,我可以让它工作。但是我真的很想知道如何测试这个案例。
推荐答案
似乎我们在RxJ中有一个检查可观察对象是否为空的特定操作。操作是isEmpty()
it('should return EMPTY when ...', (done) => {
actions$ = of(someAction)
effects.effect$.pipe(isEmpty()).subscribe( (res) => {
expect(res).toEqual(true)
done()
});
仅当Observable返回为空时,res才为True
这篇关于如何测试返回的可观测对象是否为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文