Rxjs 大理石测试
Rxjs marble testing
试图了解对 RXjs 5 订阅进行单元测试的最佳方式。
因此,例如,如果我在订阅块中有一个复杂的可观察链和一些业务逻辑,我应该如何测试它?
我看到的选项是:
- 将测试调度程序与 advanceBy 运算符结合使用(类似于您在 rxjs 4 中的做法)
- 大理石测试,但据我了解,大理石测试仅涵盖可观察对象,因此您可以根据特定输入测试可观察链的输出,但此测试不涵盖订阅块。 ..
任何建议或想法都会很有帮助
如果您断言从您的链返回的可观察对象与您的弹珠图匹配,那么您也在测试您的观察者方法是否被正确调用。如果您想测试您的观察者方法,我会独立进行。
通过大理石测试,您可以测试您的 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
试图了解对 RXjs 5 订阅进行单元测试的最佳方式。 因此,例如,如果我在订阅块中有一个复杂的可观察链和一些业务逻辑,我应该如何测试它? 我看到的选项是:
- 将测试调度程序与 advanceBy 运算符结合使用(类似于您在 rxjs 4 中的做法)
- 大理石测试,但据我了解,大理石测试仅涵盖可观察对象,因此您可以根据特定输入测试可观察链的输出,但此测试不涵盖订阅块。 ..
任何建议或想法都会很有帮助
如果您断言从您的链返回的可观察对象与您的弹珠图匹配,那么您也在测试您的观察者方法是否被正确调用。如果您想测试您的观察者方法,我会独立进行。
通过大理石测试,您可以测试您的 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