我正在尝试使用 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/