Jasmine Marbles:测试自定义RXJS运算符以处理HTTP

时间:2019-03-26 12:29:11

标签: angular rxjs jestjs jasmine-marbles

我在这里为递增的Http重试编写了此函数,但是我对如何测试它有些困惑:

export const incrementalHttpRetry = (delayArg: number = 500, numberOfRetries: number = 5): OperatorFunction<any, any> => {
  return retryWhen(errors => {
    let delayTime = delayArg;
    return errors.pipe(
      flatMap((error: any) => {
        delayTime = delayTime * 2;
        return of(error.status).pipe(delay(delayTime));
      }),
      take(numberOfRetries)
    );
  });
};

我认为我需要做这样的事情,但是我不确定从那里去哪里,这似乎需要一个模拟的Http调用而不是一个错误实例

describe('incrementalHttpRetry', () => {
  it('only errors => should return the errors but delayed', () => {
    const values = { a: new Error('some error')};
    const source = cold('-a-a-a-|', values);
    const result = source.pipe(incrementalHttpRetry(1, 5));
    expect(result).toBeObservable(source);
  });
});

但是我要测试的是一个错误(给定一个始终失败的处理程序),将导致5个错误流。

0 个答案:

没有答案