首页 > 解决方案 > 如何使用 Jasmine 在任何 Angular 应用程序中测试 RXJS 实用程序,如管道、跳过、点击、重试等

问题描述

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

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

提前致谢。

标签: javascriptangulartestingrxjsjasmine

解决方案


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

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

通过这个黑盒原理,您可以测试某些运算符对您的流的影响。你不想嘲笑他们。skip(1)例如,可以通过 in-Observable 之类的 testetof(1, 2)并期望 out-Observable of(2)

您可以模拟并且例如期望 toHaveBeenCalled 是在这些运算符中调用的外部资源,这很可能发生在 switchMap 中。


推荐阅读