我必须为此效果编写单元测试,即在出错时每 1 秒调用一次服务。例如,我需要测试调用服务 3 次后,我会收到良好的响应。
我尝试了一些方法来测试,但没有任何结果。
这是我必须测试的效果:
@Effect()
updateEffect$ = this.actions$.pipe(
ofType(featureActions.ActionTypes.UPDATE_PRODUCT),
switchMap((action: UpdateProduct) =>
this.productService.getProducts().pipe(
retryWhen((attempts) => attempts.pipe(delay(1000))),
map((productsResponse: Products) =>
productsResponse
? new featureActions.LoadProductSuccess(productsResponse)
: new featureActions.LoadProductError(productsResponse)
)
)
)
);
这是我为了看到成功场景而进行的单元测试。我要测试的是重载逻辑
it('should return UpdateProduct if service response success ', () => {
const action = new UpdateProduct('123456');
const completion = new LoadProductSuccess(productsResponseMock);
actions$ = hot('-a-', { a: action });
const response = cold('-b', { b: productsResponseMock });
const expected = cold('--c', { c: completion });
productService.getProducts.and.returnValue(response);
expect(effects.updateEffect$).toBeObservable(expected);
});