Вызов действия возвращается «неопределенный» с fetch-mock - PullRequest
0 голосов
/ 05 июня 2018

Действие "тип": не определено, это то, что я получаю, когда пытаюсь проверить действие с избыточностью при помощи fetch-mock.Любое предложение о том, как решить эту проблему?Может ли это быть ошибкой в ​​fetch-mock?

Expected value to equal:
[{"type": undefined}, {"result": {"hello": "world"}, "type": undefined}]
Received:
[{"type": "DASHBOARD_RESULT_LOADING"}, {"result": {"hello": "world"}, "type": "DASHBOARD_RESULT_READY"}]

dashboardActions.js

function resultReady(json) {
return {
type: DASHBOARD_RESULT_READY,
result: camelizeKeys(json)
 };
}

export function requestPredict(params) {
let url = `${process.env.API_URL}/predict/`;
const requestParams = {
  method: 'post',
  credentials: 'include'
};

return async (dispatch) => {
return fetch(url, requestParams)
  .then(response => {
    if (response.status === 200) {
      return response.json();
    } else {
      throw Error(response.statusText);
    }
  })
  .then(data => dispatch(resultReady(data)));
};
}

dashboardActions.test.js

const mockData = { 
"hello": "world"
}


describe('action creators', () => {

afterEach(() => {
fetchMock.reset()
})

it('should create DASHBOARD_RESULT_LOADING', () => {
 fetchMock.post('*', {"hello":"world"} );

const expectedActions = [
 { type: actions.DASHBOARD_RESULT_LOADING },
 { type: actions.DASHBOARD_RESULT_READY, result: mockData }
]

const store = mockStore({ result: {}})

return store.dispatch(actions.requestPredict())
 .then((data) => {
  expect(store.getActions()).toEqual(expectedActions)
 })
})
})

1 Ответ

0 голосов
/ 12 июня 2018

Вы получаете типы "DASHBOARD_RESULT_LOADING" и "DASHBOARD_RESULT_READY", что похоже на предполагаемое поведение.Вы ожидаете actions.DASHBOARD_RESULT_LOADING и actions.DASHBOARD_RESULT_READY, ни один из которых, похоже, не определен ни с каким значением.

Либо определите actions.DASHBOARD_RESULT_LOADING и actions.DASHBOARD_RESULT_READY:

actions.DASHBOARD_RESULT_LOADING = 'DASHBOARD_RESULT_LOADING'
actions.DASHBOARD_RESULT_READY = 'DASHBOARD_RESULT_READY'

, либо заменитеих с вашими ожидаемыми типами:

const expectedActions = [
  {
    type: 'DASHBOARD_RESULT_LOADING'
  },
  {
    type: 'DASHBOARD_RESULT_READY',
    result: mockData
  }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...