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-адреса.