1

试图了解对 RXjs 5 订阅进行单元测试的最佳方法是什么。例如,如果我有一个复杂的 observables 链和订阅块内的一些业务逻辑,我应该如何测试它?我看到的选项是:

  1. 使用带有 AdvanceBy 运算符的测试调度程序(类似于在 rxjs 4 中的操作)
  2. 大理石测试,但据我了解大理石测试仅涵盖可观察的,因此您可以根据特定输入测试可观察链的输出,但此测试不涵盖订阅块......

任何建议或想法都会非常有帮助

4

1 回答 1

0

如果您断言从您的链返回的 observable 与您的弹珠图匹配,那么您也在测试您的观察者方法是否被正确调用。如果您想测试您的观察者方法,我会独立进行。

通过弹珠测试,您可以测试您的 Observable 是否有订阅。假设您有例如以下源 observable。

const source =  m.hot("--^-a-b-c-|");

然后你可以测试你的 observable 是否有正确的订阅:

const expectedSubscription = "^-------!";
m.expect(source).toHaveSubscriptions(subs);

当然,这取决于您使用的版本以及您使用的大理石库。(语法可能不同)。还有一篇很好的博文,可以很好地概述整个主题。https://itnext.io/findings-about-rxjs-marble-testing-and-the-testscheduler-b23c6bdf6b49

于 2018-10-08T17:52:33.280 回答