mardi 13 septembre 2016

react redux reducer - testing with karma

const initialState = {
  loaded: false,
  data: [],
  fetchHistory: []
};
export default function messages(state = initialState, action) {
  switch (action.type) {
 case LOAD_MESSAGES_SUCCESS:
    return {...state,
      loading: false,
      loaded: true,
      fetchHistory: [...state.fetchHistory, { lastFetch: action.payload.date, channelName: action.payload.channel }],
      data: [...state.data.filter(message => message.channelID !== action.payload.channel), ...action.payload.json]
    };

My test code:

  expect(messages(undefined,receiveMessages(message4,channel,lastFetch))).toEqual({
                loading: false,
                loaded: true,
                data:[message4], ///must be array
                fetchHistory: [{lastFetch:lastFetch,channelName:channel}],

             })

I am getting an error message: undefined is not a constructor (evaluating Array.from(arr). I dont get this error in my other tests that are similar, its only when I use receiveMessages() to dispatch LOAD_MESSAGES_SUCCESS. I am assuming bec I have a filter on my state, that I cannot have undefined value. So I substituted undefined with {}, a mocked initialState etc etc but I am still get the same error about undefined is a not a constructor....

Aucun commentaire:

Enregistrer un commentaire