javascript - 如何使用 Jasmine 在任何 Angular 应用程序中测试 RXJS 实用程序,如管道、跳过、点击、重试等

标签 javascript angular testing rxjs jasmine

我正在尝试使用 Jasmine 在 Angular 应用程序中测试我的组件。 我无法从 RXJS 模拟某些实用程序,如管道、跳过、切换映射等。 this.route.queryParams.pipe(skip(1)).subscribe(params => comsole.log(params);

有人可以帮我推荐一种方法来测试这件作品吗?

提前致谢。

最佳答案

我觉得你有点走错了路。让我们带您走上正确的道路。

首先,您需要像黑盒一样测试可观察对象。你不需要知道里面发生了什么。你只想知道什么进什么出。你可以用 Jasmine 大理石完美地测试它。此链接可能对您有所帮助: https://medium.com/@bencabanes/marble-testing-observable-introduction-1f5ad39231c

通过这个黑盒原理,您可以测试某些运算符对您的流的效果。你不想 mock 他们。例如,skip(1) 可以被像 of(1, 2) 这样的 in-Observable 测试,并期待一个 out-Observable of(2).

你可以模拟什么,例如期望 toHaveBeenCalled 是在这些操作符中调用的外部资源,这很可能发生在 switchMap 中。

关于javascript - 如何使用 Jasmine 在任何 Angular 应用程序中测试 RXJS 实用程序,如管道、跳过、点击、重试等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369266/

相关文章:

android - Android : Suggestions for test application 蓝牙开发入门

angular - 是否可以访问各个 ag-grid 列标题来实现 : on-mouseover ="method_name()" on them?

java - Angular 应用程序从 tomcat 应用程序获取错误

javascript - 如何仅使用 bootstrap 和 jQuery 制作可编辑表格?

javascript - 使用 WAMP,MySQL 通过 ajax 调用的 PHP 脚本中的 UPDATE 命令不会更新

angularjs - 如何在 tomcat 或 jboss 上部署我的 Angular 2 应用程序?

安卓 Kotlin 测试。 lateinit 属性 _db 尚未初始化

web-services - Soa 网络测试自动化

javascript - 如何从 jquery 中的字符串中删除最后一个字符?

javascript - HTML5 拖放, "drop"事件未在 Firefox 中触发