单元测试期间 Observable.fromPromise 为空

2023-12-15

loadAdList$是一个 Observable,它利用了actions$ stream:

loadAdList$: Observable<Action> = this.actions$
    .ofType<adActions.Load>(adActions.LOAD)
    .switchMap((action) => {
      return Observable.fromPromise(store.findAll('ad', action.payload)
        .then((ads) => {
          return new adActions.LoadSuccess(ads);
        })
        .catch((err) => {
          return new adActions.LoadFail(err);
        }));
    });

在浏览器中运行,没有任何问题。但是,我也想对其进行单元测试:

actions$ = hot('-a', { a: loadAction });
const storeResponse = Promise.resolve(mockAds);
const expected$ = cold('-c', { c: loadSuccessAction });

spyOn(store, 'findAll').and.returnValue(storeResponse);

expect(effects.loadAdList$).toBeObservable(expected$);

测试失败并显示以下内容:

Expected 

to deep equal 
    {"frame":10,"notification":{"kind":"N","value":{"payload":"[
    ...

我相信这个问题与store.findAll返回承诺的方法。这是基于以下测试的结果:

.switchMap((action) => {
  // This test will pass
  return Observable.from([new adActions.LoadSuccess(mockAds)]);

  // This test will fail
  return Observable.fromPromise(Promise.resolve(new adActions.LoadSuccess(mockAds)));

});

这有点不幸,但没有很好的方法让 Promise 在 Rx v5 中的 TestScheduler 上下文中同步解析。出于这些原因,如果 Observable 源是从 Promise 开始的,它将无法用于弹珠测试,并且您必须通过订阅以不同的方式创建断言。

Check https://github.com/ReactiveX/rxjs/issues/701 / https://github.com/ReactiveX/rxjs/pull/745如果您想了解失败原因的详细信息。

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

单元测试期间 Observable.fromPromise 为空 的相关文章

随机推荐

  • 在MongoDB中,如果一个索引有3个字段,那么我们在查询2个字段时可以使用该索引吗? (第三个字段的通配符)

    如果有一个索引 page type our id date 并且在查询时 db analytics find page type ingredients ga date gte new Date Wed Sep 08 2010 12 00
  • 如何在 .NET 运行时将文件夹添加到程序集搜索路径?

    我的 DLL 是由第三方应用程序加载的 我们无法对其进行自定义 我的程序集必须位于它们自己的文件夹中 我无法将它们放入 GAC 我的应用程序需要使用 XCOPY 进行部署 当根 DLL 尝试从另一个 DLL 同一文件夹中 加载资源或类型时
  • “倒置”边界半径可能吗? [复制]

    这个问题在这里已经有答案了 当我想到为我的链接制作选项卡 或选项卡 时 我正在研究我的网站的 CSS 我在这个例子中删除了文本 但这基本上是一个导航栏 这是图片 我的问题是 如何获得黑色箭头指向的 边框半径 效果 并且看起来像蓝色箭头指向的
  • 隐藏列时删除空格

    我在用贾斯珀报告 4 5 0生成报告 我正在生成不同格式的报告 如 html csv pdf xls doc 在我的一份报告中 我有 6 栏说第 1 列 第 2 列 第 3 列 第 4 列 第 5 列 第 6 列 但根据我想隐藏的条件col
  • 关闭 Sql Server/T-SQL 中的日志记录

    我需要关闭 Sql Server T SQL 中的日志记录才能写入 as400 中的文件 表 我发现你可以在 SQLite 中使用 Pragma 来做到这一点 然而 我发现T SQL 中不存在这种情况 有任何想法吗 Thanks 您需要禁用
  • 如何在 ios 中将 y-planar、u-planar 和 uv-planar 与 yuv bi planar 分开?

    在应用程序中我使用了 AVCaptureVideo 我得到了 kCVPixelFormatType 420YpCbCr8BiPlanarFullRange 格式的视频 现在我从图像缓冲区获取 y 平面和 uv 平面 CVPlanarPixe
  • 将位图转换为 WebP 图像?

    谁知道是否可以转换Bitmap to a WebP图像使用C 一直在 Google 搜索 但找不到 C 的任何内容 我找到了这个 mc kay libwebp sharp GitHub但它似乎没有将位图转换为WebP format 有任何想
  • 创建可重用的 jQuery 函数

    我没有每次都重新编写大量代码 而是尝试将函数合并到我的工作中 但我在使其工作时遇到了困难 基本上 我有一些单选按钮的选择 每次单击单选按钮时我都会执行一些操作 我实际上正在加载 iFrame 但是 我需要使每个单选按钮的 iFrame SR
  • WSL 2 真的支持 32 位程序吗?

    我用谷歌搜索了这个问题 一些答案声明 WSL 2 现在支持 ELF 32 程序 然而 在wsl2 Debian Ubuntu发行版上的简单测试没有通过 这是我的测试 install run time sudo dpkg add archit
  • 将 GridView 绑定到 IQueryable

    这个问题纯粹是学术性的 因为我从来没有梦想过这样做real code 使用 LINQ to SQL 我想绑定一个IQueryable
  • 防止 Chrome 中链接点击时光标发生变化

    单击 Chrome 而非 Safari 或 Firefox 中的链接会将光标从指针更改为箭头 这种行为可以预防吗 即 单击后是否仍然有指针 但光标仍悬停在链接上 编辑 好的 我做了更多测试 首先 任何人希望光标在单击链接后保持为指针的唯一原
  • 覆盖默认主题的自定义主题 WP7

    是否可以创建自定义主题并将其用作默认主题 我可以在任何地方找到的每个示例都说您可以通过复制来创建自定义主题ThemeResources xaml and System Windows xaml文件并将它们作为合并字典包含在您的应用程序中 h
  • Webpack 使用 Typescript 进行延迟加载

    我遇到了延迟加载和 webpack 的问题 Sean Larkin 的视频展示了使用 webpack 4 创建延迟加载包是多么容易 Here 但是当我尝试用打字稿来做时 我遇到了一些问题 index ts export const some
  • 比较不同表的数据行

    我发布了一个类似查询前一段时间 决定降低它的复杂性 让开发人员回答我的主要问题 它可以说是重复的 但我仍然想将其发布 因为编辑上一篇文章并没有产生太多结果 我有 2 个数据表 dataTable1 和 dataTable2 两者都有 1 行
  • 在 URL 中传递 base64 编码的字符串

    通过 GET 参数传递原始 Base64 编码字符串是否安全 还有其他 base64 规范 见表here了解具体情况 但本质上你需要 65 个字符来编码 26 个小写 26 个大写 10 个数字 62 您还需要两个 和一个填充字符 但它们都
  • CRM 2011:全局 JavaScript 和状态栏中的按钮

    我对 CRM 2011 不太陌生 但我面临一个大问题 我在网上找到了一些解决方案 可以在 CRM 中创建一些评分 排名系统 当我在顶部状态栏中 功能区按钮栏上方 屏幕右上角用户名旁边看到星星时 我完全困惑了 当我单击此按钮时 我会打开 di
  • Excel C# 将单元格转换为百分比

    我需要将双精度的单元格转换为百分比 我在 Excel 中使用宏 它说 Range B5 Select Selection Style Percent 当我在 C 中执行此操作时 它不起作用 Excel Range procentRange
  • 数据库休眠并引发异常

    当我一段时间没有进行任何数据库查询时 我认为它必须休眠 如果你随后调用它 则会抛出异常 java sql SQLNonTransientConnectionException Could not read resultset unexpec
  • Objective-C 中的块真的有用吗?它们的效用是什么? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我刚刚读过有关块的内容 我了解到它们只是将信息封装为普通方法 但具有自己的强引用数据 我想知道块的好处是什么 这是适用于我的项目的块的用途 替换代表和协议 在某些情况下 问题 假设您需
  • 单元测试期间 Observable.fromPromise 为空

    loadAdList 是一个 Observable 它利用了actions stream loadAdList Observable