Тестирование действий создателей с топором ios, макет в reactjs, неудачный - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь проверить создателя этого действия, но он сразу переходит в блок catch, что приводит к

«Не удается прочитать свойство« данные »с неопределенной ошибкой из этой строки» (setAlert (err.response.data.error, "error", "4")) '.

также, когда я закомментирую код внутри блока catch, я получаю эту ошибку

TypeError: Невозможно прочитать свойство 'type' из неопределенного

в этой строке expect(actions[0].type).toEqual("GET_POSTS");

export const getPosts = (skip, limit, previousState = []) => async dispatch => {
  const body = JSON.stringify({ skip, limit });
  try {
    let res = await axios.post("/api/v1/post/posts", body, config);
    let newState = [...previousState, ...res.data.posts];
    dispatch({
      type: GET_POSTS,
      payload: newState,
    });
  } catch (err) {
    dispatch(setAlert(err.response.data.error, "error", "4"));
  }
};

, и вот мой тестовый файл:

import mockAxios from "axios";
import configureMockStore from "redux-mock-store";
import thunk from "redux-thunk";
import { getPosts } from "../../redux/actions/postActions";

const mockStore = configureMockStore([thunk]);

describe("getPosts action creator", () => {
  const store = mockStore({});

  it("dispatches GET_POSTS action and returns data on success", async () => {
    mockAxios.get.mockImplementationOnce(() =>
      Promise.resolve({
        posts: [{ id: 1, title: "First Post" }],
      })
    );
    await store.dispatch(getPosts());
    const actions = store.getActions();

    expect(actions[0].type).toEqual("GET_POSTS");
    expect(actions[0].posts[0].title).toEqual("First Post");
  });
});
...