如何测试返回的 Observable 是否为 EMPTY

2023-12-27

我有一个返回的效果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。但我真的很想知道如何测试这个案例。


看来我们在 RxJs 中有一个特定的操作来检查可观察量是否为空。操作是isEmpty()

it('should return EMPTY when ...', (done) => {
    actions$ = of(someAction)
    effects.effect$.pipe(isEmpty()).subscribe( (res) => {
                                               expect(res).toEqual(true)
                                               done()
                                              });

仅当 observable 确实返回空时 res 才会为 true

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试返回的 Observable 是否为 EMPTY 的相关文章

随机推荐

  • 有资质的生产者消费者

    我是 clojure 的新手 正在尝试了解如何正确使用其并发功能 因此任何批评 建议都会受到赞赏 所以我尝试在 clojure 中编写一个小型测试程序 其工作原理如下 有 5 个生产者和 2 个消费者 生产者等待一段随机时间 然后将一个数字
  • 克服空数组的 ValueError

    In 这次讨论 https stackoverflow com questions 22853118 twiny in matplotlib changes the y axis scale 22856984 noredirect 1 co
  • 如何删除cllocation的缓存?

    我正在开发一个 iPhone 应用程序 它是一个位置感知应用程序 目前 除了先前位置的缓存之外 该应用程序运行良好 第一次启动应用程序位置管理器会获取当前位置 然后根据当前位置显示附近的事物 但从下一个开始 它会使用之前获取的位置 直到我重
  • 在 php 中解析 mIRC 颜色

    我想转换mirc 颜色代码 http www mirc com help colors html通过 php 转换为 html 这是示例 http searchirc com search php F exact T chan N 6246
  • Javascript异步执行:回调会中断正在运行的代码吗?

    我只是希望有人能为我澄清这一点 如果我使用 Node js 在服务器端运行以下代码 不在浏览器中 console log a db get select from table1 function result console log b c
  • 如何在WebBrowser控件中注入CSS?

    据我所知 有一种方法可以将 javascript 注入到 DOM 中 下面是使用 javascript 注入的示例代码webbrowser控制 HtmlElement head webBrowser1 Document GetElement
  • 在 HTML/JavaScript 扩展中使用 x-webkit-speech

    我正在尝试使用新的x webkit speech简单 HTML JavaScript 扩展中的函数谷歌浏览器 http en wikipedia org wiki Google Chrome 然而 我已经尝试并尝试查看一堆示例 但无法让它成
  • Number 上的 QueryDSL Like 操作

    我必须用通配符搜索数字字段 相应的 JQPL 查询将如下所示 SELECT e From Entity e where e personNumber LIKE numberPattern numberPattern 是一个像这样的字符串 1
  • Git-svn 可以在大型分支存储库上使用吗?

    我正在尝试使用 Git 作为 SVN 存储库的前端 以便能够使用 Git 的优秀功能 例如简单的分支 存储等 问题是 SVN 存储库非常大 8 000 转 并且包含大量分支和标签 旧的和新的 这是一个接近标准的布局 配置包含获取 分支和标签
  • AngularJS 返回 Object 对象

    我有一个返回数组的后端 REST 服务 我正在尝试在我的其中之一中显示此 REST 服务返回的值
  • 改进快速排序

    如果可能 我如何改进以下快速排序 性能方面 有什么建议么 void main quick a 0 n 1 void quick int a int lower int upper int loc if lower
  • 是否可以在 C# 中使用非类型化泛型列表?

    我正在尝试以下设计但没有成功 abstract class Foo
  • data.table 重复后截断行

    假设我有以下数据集 library data table dt lt data table x c 1 2 4 5 2 3 4 gt dt x 1 1 2 2 3 4 4 5 5 2 6 3 7 4 我想在第 4 行之后截止 因为那时出现了
  • Mongo中的套接字超时异常

    我看到几个MongoExceptions引起的SocketTimeoutException 请参阅下面的堆栈跟踪 也就是说 客户端在超时 30秒 内没有得到响应 现在我想知道如何解决它 简单的解决方案是增加超时 但我想首先了解根本原因 你有
  • Protractor - 如何将 browser.executeScript 的值存储在变量中?

    我试图将 browser executeScript 的值存储在 it 块的局部变量内 但在它显示 null 的所有情况下我无法这样做 到目前为止我已经尝试了很多方法 browser executeScript txtName css bo
  • 类似安全 ActiveRecord 的查询

    我正在尝试编写 LIKE 查询 我读到纯字符串查询并不安全 但是我找不到任何解释如何编写安全的 LIKE Hash 查询的文档 是否可以 我应该手动防御 SQL 注入吗 为了确保您的查询字符串得到正确的清理 请使用数组或哈希查询语法来描述您
  • 如何从 ASP.NET 4.0 Web 应用程序中禁用/删除 WebPageHttpModule?

    我正在努力让我的用于处理 cshtml 页面的通配符 http 处理程序 https stackoverflow com questions 6479986 disable razors default cshtml handler in
  • 关于使用 PTRACE_SYSEMU 有什么好的指南吗?

    有没有人有关于使用的任何好的解释 教程 书籍或指南PTRACE SYSEMU http www kernel org doc man pages online pages man2 ptrace 2 html 我发现有趣的是 ptrace
  • 如何创建当用户在 iPhone 上滑动手指时激活的按钮

    我正在编写一个 iPhone 应用程序 它有一个类似钢琴的界面 用户会看到许多大按钮 它们之间没有空格 目前 我已经通过鼠标右键将按钮拖动到适当的视图控制器界面文件中 在 Interface Builder 中创建了 IBActions 这
  • 如何测试返回的 Observable 是否为 EMPTY

    我有一个返回的效果EMPTY在一种情况下可以观察到 我正在尝试测试这个案例 但我似乎不知道如何测试EMPTY可观察到的 我的代码如下 效果 effect createEffect gt this actions pipe ofType so