使用promises时如何对RxJS5进行单元测试?

时间:2017-03-21 10:49:39

标签: rxjs5

这个问题是关于RxJS5。

上下文:我尝试使用TestScheduler,一切正常,直到我插入承诺。

例如,让我们采取一些功能"从下面的例子。如何在1分钟内验证预期的输出(实际上不必在测试中等待1分钟)。

const asyncFunction = new Promise( (resolve) =>
   setTimeout((() => resolve(1)), 0)
);

const someFunction = () =>
  Rx.Observable.fromInterval(15000)
    .flatMap( each => Rx.Observable.from(asyncFunction()))
    .map(each => each + 1)

1 个答案:

答案 0 :(得分:0)

我认为这个答案基本上总结了你需要知道的一切:How do I test a function that returns an observable using timed intervals in rxjs 5?

简单地说,即使默认值为15000,您也应该允许用户设置自定义延迟:

const someFunction = (delay = 15000) =>
  Rx.Observable.fromInterval(delay)
  ...

然后对于TestSheduler,您需要使用延迟<= 750,因为750被硬编码为最大虚拟时间。请参阅上面链接的答案以获取更多详细信息。