Jasmine Marbles: тестирование пользовательского RXJS-оператора для обработки HTTP - PullRequest
0 голосов
/ 26 марта 2019

Я написал эту функцию здесь для дополнительной попытки 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-вызов, а не экземпляр Error

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 ошибок.

...