javascript - 如何使用 Jasmine 在任何 Angular 应用程序中测试 RXJS 实用程序,如管道、跳过、点击、重试等
问题描述
我正在尝试使用 Jasmine 在 Angular 应用程序中测试我的组件。我无法从 RXJS 模拟某些实用程序,例如管道、跳过、切换地图等。
this.route.queryParams.pipe(skip(1)).subscribe(params => comsole.log(params);
有人可以帮我建议一种方法来测试这件作品吗?
提前致谢。
解决方案
我认为你有点走错路了。让我们带您走上正确的道路。
首先,您需要像黑盒一样测试可观察对象。你不需要知道里面发生了什么。你只想知道什么进什么出。你可以用茉莉花大理石完美地测试它。此链接可能对您有所帮助: https ://medium.com/@bencabanes/marble-testing-observable-introduction-1f5ad39231c
通过这个黑盒原理,您可以测试某些运算符对您的流的影响。你不想嘲笑他们。skip(1)
例如,可以通过 in-Observable 之类的 testetof(1, 2)
并期望 out-Observable of(2)
。
您可以模拟并且例如期望 toHaveBeenCalled 是在这些运算符中调用的外部资源,这很可能发生在 switchMap 中。
推荐阅读
- websocket - 如何在 aiohttp 中删除缓冲的 websocket 消息?
- java - 我可以在使用 selenium webDriver 中列出所有具有特定共享名称的元素吗
- c# - 如何为 SQL Server 创建跨多台机器使用的路径
- r - 替换的循环长度为零
- javascript - 如何查看网站是客户端呈现还是服务器端呈现?
- java - 在 Kotlin 中,有没有办法通过函数调用向枚举中添加一个值?
- r - 在r中找到水道周围两点之间的最短距离
- atom-editor - Atom 编辑器:失去了在 Atom 编辑器中进行多行编辑的能力
- next.js - Apollo GraphQL 加载查询
- javascript - 可观察到的角度订阅返回未定义