Внутри моей саги я вызываю запрос API.
function* sendRequestSaga(): SagaIterator {
yield takeEvery(Actions.sendRequest.type, sendApiRequest);
}
function* sendApiRequest(action: Action<string>) {
try {
yield call(/*args for calling api*/);
} catch (error) {
// Handle error
}
}
Я создал модульный тест для успешного примера. Теперь я хочу создать модульный тест для случая, когда вызов api возвращает исключение.
it("Should handle exception correctly", () => {
const expectedException = new Error("my expecting exception");
return expectSaga(mySaga)
.provide([
[call(/*args for calling api*/), expectedException],
])
.call(/*args for calling api*/)
.dispatch({
type: Actions.sendRequest.type,
payload: /*args*/
})
.silentRun()
.then(() => {
// My assertion
});
}
Но это не работает, потому что provide
возвращает только значение для call
метода вместо броска new Error
объект. Итак, объект Error не перехвачен. Как я могу симулировать действие Ошибка броска?