我在这里编写了这个函数用于增量 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 个错误流。