Redux-сага насмешливый apis для разработки - PullRequest
0 голосов
/ 15 июня 2019

Я использую "redux-saga": "^ 1.0.2"

Я хотел издеваться над своими API-интерфейсами, используя redux-saga, и не нашел правильных ответов в Интернете.

Я наконец-то получил очень простое, но простое решение: использование 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 });
  }
}

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете смоделировать 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}})
     );
}

Надеюсь, это поможет.

...