У меня есть запрос на получение, в котором я установил тайм-аут на 2 секунды, если я не получил ответ, то выдается ошибка.
В службах
deleteAccount(accountId: string) {
return this.http.delete(FUNDING_ACCOUNT_DELETE_URL).pipe(
timeout(RESPONSE_TIME_OUT) // 2 seconds
);
}
В эффектах:
paymentRemove = this.actions
.ofType(ActionTypes.PAYMENT_REMOVE).pipe(
switchMap((action: PaymentRemoveAction) =>
this.service.deleteAccount(action.payload).pipe(
map(
_ => new PaymentRemovedAction()),
catchError(e => {
if (e) {
return of(new PaymentRemoveErrorAction());
}
})
))
);
В моем файле модульного теста Effects у меня есть
class TestMock {
deleteAccount(accountId: string) {
return Observable.create(async observer => {
if (accountId === ACCOUNT_ID) {
observer.next('');
return;
}
observer.error('Error');
});
}
}
А также в моем блоке описания у меня есть
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
TestEffects,
{provide: AddService, useClass: TestMock},
{provide: Router, useClass: RouterMock},
provideMockActions(() => actions)
],
imports: [
StoreModule.forRoot({
payment: addtReducer
})
]
});
effects = TestBed.get(TestEffects);
});
Это мой положительный тестовый пример //tslint: disable-next-line: ban
fit('delete payment option - success', marbles(m => {
const action = new PaymentRemoveAction(ACCOUNT_ID);
const completion = new PaymentRemovedAction();
const expected = m.hot('b', {b: completion});
actions = m.hot('a', {a: action});
m.expect(effects.paymentRemove).toBeObservable(expected);
}));
Как написать отрицательный тестовый случай для тайм-аута в эффектах, но не в файле service.ts