Получение [TypeError: Невозможно прочитать свойство 'map' of undefined] при тестировании действия приведения к вызову при редуксе - PullRequest
0 голосов
/ 07 января 2019

Я использую действие приставки, чтобы вызвать вызов, в котором у меня есть функция сопоставления с результатом, полученным из Обещания. Когда я пытаюсь проверить действие с помощью fetch-mock, я получаю сообщение об ошибке: [TypeError: Невозможно прочитать свойство 'map' of undefined].

Это часть файла action.js:

export const requestChartData = () => (dispatch) => {
dispatch({type: REQUEST_CHART_DATA_PENDING})

return fetch('https://swapi.co/api/people')
    .then(response => response.json())
    .then(data => dispatch({type: REQUEST_CHART_DATA_SUCCESS, 
            labels: data.results.map(label => label.name),
            chartData: data.results.map(chartData => chartData.height )}))

    .catch(error => dispatch({type: REQUEST_CHART_DATA_FAILED, payload: error}))        
}

Это часть из action.test.js:

import * as actions from '../../actions/index'
import {
ROOT_URL,
API_KEY,
FETCH_POSTS,
CREATE_POST,
REQUEST_CHART_DATA_PENDING,
REQUEST_CHART_DATA_SUCCESS,
REQUEST_CHART_DATA_FAILED
} from '../../constants/constants'

import thunk from 'redux-thunk'
import configureMockStore from 'redux-mock-store'

import fetchMock from 'fetch-mock'

const middlewares = [thunk]
const mockStore = configureMockStore(middlewares)

describe('async actions', () => {
afterEach(() => {
  fetchMock.restore()
})

it('creates REQUEST_CHART_DATA_SUCCESS when fetching data has been done', () => {
  fetchMock.getOnce('https://swapi.co/api/people', {
    data: { results: ['testing', 'test']},
    data: { results: ['testing', 'test']},
    headers: { 'content-type': 'application/json' }
})


  const expectedActions = { 
      type: REQUEST_CHART_DATA_SUCCESS, labels: {data: { results: ['testing', 'test']}},
        chartData: {data: { results: ['testing', 'test']}}
  }

  const store = mockStore({labels: {data: { results: []}},
    chartData: {data: { results: []}}})

  const action = store.getActions()

  return store.dispatch(actions.requestChartData()).then(() => {
    // return of async actions
    expect(action[1]).toEqual(expectedActions)
    })
    })
})
...