如何测试返回的可观测对象是否为空 [英] How to test if returned Observable is EMPTY

查看:30
本文介绍了如何测试返回的可观测对象是否为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在一种情况下返回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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆