Как протестировать GET-запрос Redux-Saga API, который отправляет данные в API - PullRequest
0 голосов
/ 29 мая 2020

Saga Code, работает нормально, он показывает список ресторанов на основе введенного вами города.

export function* fetchRestaurantsAsync({ cityName }) {
  try {
    const data = yield call(fetchRestaurants,cityName);
    yield put(receiveRestaurants(data));
  } catch (e) {
    yield put(requestFailed(e));
  }
}

export default function* watchFetchRestaurant() {
  yield takeLatest(RESTAURANTS_REQUEST, fetchRestaurantsAsync);
}

Тестовый файл Redux-Saga

import fetchRestaurants from "api";
import { runSaga } from 'redux-saga';
import {fetchRestaurantsAsync} from 'sagas'

test("should load restaurants in case of success", async () => {

 const dispatchedActions = [];

  const fakeStore = {
    getState: () => ({cityName:'Toronto'}),
    dispatch: (action) => dispatchedActions.push(action),
  };

  await runSaga(fakeStore, fetchRestaurantsAsync).done;
  console.log(dispatchedActions)
});

Это моя ошибка теста


    TypeError: Cannot destructure property 'cityName' of 'undefined' as it is undefined.

      4 | import fetchRestaurants from "api";
      5 | 
    > 6 | export function* fetchRestaurantsAsync({ cityName }) {
        |                                          ^
      7 |   try {
      8 |     const data = yield call(fetchRestaurants,cityName);
      9 |     yield put(receiveRestaurants(data));

      at fetchRestaurantsAsync (src/sagas/index.js:6:42)

все примеры, которые я нашел, не показывают, как передавать данные, в данном случае название города. Это просто запросы на выборку, которые не управляют URL-адресом. Я передаю название города в конце URL-адреса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...