获得异步动作创建者测试以通过Redux

时间:2018-11-08 10:14:27

标签: javascript testing redux jestjs

我有一个异步actionCreator,它发出API调用-成功则发出失败响应-失败。我正在为通话编写测试,但无法获得测试以返回正确的响应。

这是我正在测试的功能-每个调度都调度一个动作。

const getStudyData = () => {
  return async dispatch => {
  try {
    dispatch(fetchStudiesBegin());
    const res = await  DataService.fetchAllStudyData();
    dispatch(fetchStudiesSuccess(res))
  }
  catch (err) {
    dispatch(fetchStudiesError(err))
  }
  }
} 


const fetchStudiesBegin = () => ({
  type: types.FETCH_STUDIES_BEGIN
});

const fetchStudiesSuccess = studies => ({
  type: types.FETCH_STUDIES_SUCCESS,
  payload: { studies }
});

const fetchStudiesError = error => ({
  type: types.FETCH_STUDIES_ERROR,
  payload: { error }
});

这是我编写的测试-但是它给了我ERROR响应而不是SUCCESS响应

import configureStore from 'redux-mock-store';
const middlewares = [ thunk ];
const mockStore = configureStore(middlewares);
import fetchMock from 'fetch-mock';

  describe('Test thunk action creator for the API call for studies ', () => {
    it('expected actions should be dispatched on successful request', () => {
      const store = mockStore({});
      const expectedActions = [
        types.FETCH_STUDIES_BEGIN,
        types.FETCH_STUDIES_SUCCESS
      ];

      // Mock the fetch() global to always return the same value for GET
      // requests to all URLs.
      fetchMock.get('*', { response: 200 });

      return store.dispatch(dashboardOperations.getStudyData())
        .then(() => {
          const actualActions = store.getActions().map(action => action.type);
          expect(actualActions).toEqual(expectedActions);
        });

      fetchMock.restore();
    });

  });
});

0 个答案:

没有答案