【发布时间】:2020-06-18 04:40:45
【问题描述】:
在saga函数中,成功后,我正在做一个回调。我试图在测试中涵盖这一点,但它没有被涵盖。谁能提出一些涵盖这些领域的方法。
export function* submitSavedDataWorker(action) {
try {
const response = yield call(suggestFunction, action.payload);
const { data } = action.payload;
yield put({
type: actionTypes.suggestType,
payload: response.data,
prevData: data,
});
if (action.successFn) {
action.successFn(response.data);
}
} catch (error) {
const { charityData } = action.payload;
yield put({
type: actionTypes.saveFailType,
payload: error,
prevData: data,
});
}
}
我写过这样的测试用例:
describe('submitSavedDataWorker success', ()=> {
const it = sagaHelper(
submitSavedDataWorker({ payload: { data: 1234 }, successFn: ()=> { return 0 } })
);
it("should get error as result", (result) => {
expect(result).toEqual(
call(suggestFunction, { data: 1234 })
);
return {data: true};
});
it("should get success as result", (result) => {
expect(result).toEqual(
put({
type: actionTypes.suggestType,
payload: true,
prevData: 1234,
})
);
});
});
【问题讨论】:
-
“不被覆盖”是什么意思?你是根据报道来判断的吗?它说什么? “覆盖那些领域” - 究竟是哪些领域?您可以从使用 Jest spy 作为 successFn 开始。
-
是的,覆盖率报告显示: if (action.successFn) { action.successFn(response.data); } 未涵盖。
-
您是否尝试使用间谍?
标签: redux jestjs redux-saga redux-saga-test-plan