我正在使用“ redux-saga”:“ ^ 1.0.2”
我想使用redux-saga模拟我的API,但没有在线找到正确的答案。
我最终得到了一个非常基本但简单的解决方案:使用Promise。
您能给我一些有关这项技术的反馈吗?您有更好的建议吗?
import { takeEvery, call, put } from "redux-saga/effects";
let mock = 1
function getdata() {
if (mock === 0) {
return fetch("https://your_own_address").then(response =>
response.json()
);
}
else {
return new Promise(function(resolve, reject) {
resolve({data: {id: 1}})
})
}
}
export default function* watcherSaga() {
yield takeEvery("GET_DATA", workerSagaGetData);
}
function* workerSagaGetData() {
try {
const payload = yield call(getdata);
yield put({ type: "DATA_SUCCESS", payload });
} catch (e) {
yield put({ type: "DATA_ERROR", payload: e });
}
}
答案 0 :(得分:0)
您可以嘲笑fetch
,即使用fetch-mock npm软件包(这是google建议的第一个软件包,也许还有其他解决方案)。
您还可以添加一些env变量来跟踪是否需要模拟,即在mock.js
中的某个位置:
if (process.env.REACT_APP_MOCK_FETCH) {
fetchMock.mock(
'https://your_own_address',
JSON.stringify({data: {id: 1}})
);
}
希望有帮助。