我正在一个使用redux-saga
来管理API调用状态更改的项目。
我已经看到了很多关于如何对传奇进行单元测试的示例,但是我可以应用到实际进行集成测试的示例中却很少。我们将jest
用于断言。
我想验证一下,当我们的用户单击“保存”时,是否调度了正确的操作,该操作调用了正确的传奇,然后从API中获取了一些数据,从而更改了状态。我想测试整个流程。如果API被模拟,那就很好。
该代码最初是在Typescript中使用的,但是为了简单起见,将其更改为普通的JS。我们正在使用typescript-fsa
创建操作,即actionCreator
所指的动作。
我不知道在给定动作的情况下如何实际测试传奇。在这种情况下,FETCH_ITEMS_STARTED
动作将使一切开始。这触发了调用handleFetchItems
的观察者。这顺应了另一个生成器,该生成器会产生一个承诺,该承诺会在API调用完成时得到解决,并应与结果一起调度一个FETCH_ITEMS_DONE
操作。
function* handleFetchItems (action) {
yield call(
helperGenerator,
action,
actionCreator,
function (payload) {
// more code goes here...
return api.getItems(payload);
}
);
}
function* helperGenerator (action, actionCreator, callback) {
let result = yield call(function () {
return callback(action.payload);
});
yield put(actionCreator.done({
params: action.payload,
result
}));
}
function* watcher () {
yield takeEvery(items.started, handleFetchItems);
}
答案 0 :(得分:1)
如果有人仍然有兴趣,我就此主题发布了an article。这里有一些注意事项:
使用redux-saga-test-plan