Написать модульный тест для редуктора, но - TypeError: state.commentList не повторяется - PullRequest
0 голосов
/ 08 февраля 2020

это - commnetsReducer. js файл

import { ADD_COMMENT } from "./actionType";
// let initialState = {
//   commentList : []
// };

const commnetsReducer = (state = { commentList: [] }, action) => {
  switch (action.type) {
    case ADD_COMMENT:
      return { ...state, commentList: [...state.commentList, action.payload] };
    default:
      return state;
  }
};

export default commnetsReducer;

** это модульный тест для вышеуказанного редуктора commnetsReducer.test. js **

import commnetsReducer from "../reducer";
import { ADD_COMMENT } from "../actionType";
// const uuid = require("uuid");

describe("comment reducer ", () => {
  it("should returns initial state", () => {
    expect(commnetsReducer(undefined, {})).toEqual({
      commentList: []
    });
  });

  it("handle action of type SAVE_COMMENT ", () => {
    expect(
      commnetsReducer([], { type: ADD_COMMENT, payload: "new comment" })
    ).toEqual({commentList :['new comment']});
  });
});

** это ошибка, которую я получил в консоли **

введите описание изображения здесь

1 Ответ

0 голосов
/ 08 февраля 2020
commnetsReducer([], { type: ADD_COMMENT, payload: "new comment" })

Вы передали массив как состояние. Массивы не имеют свойства .commentList, поэтому, когда ваш редуктор пытается распространить state.commentList, вы получаете эту ошибку при попытке распространить неопределенное значение.

Вместо этого переходите в состояние с правильной формой, например:

commnetsReducer({
  commentList: []
}, { 
  type: ADD_COMMENT, 
  payload: "new comment" 
});
...