Как проверить действие, которое зависит от магазина

У меня есть такая акция:

export const loadPositions = (accountId, filter) => dispatch => {
  dispatch({ type: ActionTypes.SEARCH_RESULTS_PENDING });

  return ServiceManager.call(someUrl, {
    method: 'GET',
  })
    .then(({ _embedded: { positions } }) => {
      dispatch(updatePositions(positions));
      dispatch(filterPositions(filter));
    })
};

И проверить:

it('should filter positions giving no results', () => {
  return store.dispatch(loadPositions(accountId, filter)).then(() => {
    const filterAction = findActionByType(store.getActions(), ActionTypes.SEARCH_RESULTS_UPDATED);
    const {
      payload: { instruments },
    } = filterAction;

    expect(instruments).toEqual([]);
  });
});

Я тестирую с помощью import configureMockStore from 'redux-mock-store';

Проблема в том, что filterPositions, которая отправляет SEARCH_RESULT_UPDATED начинается с этого вызова:

export const filterPositions = filter => (dispatch, getState) => {
  const positions = selectors.getPositions(getState());
  ...
}

Это зависит от состояния, которое должно быть предварительно установлено updatePositions действие (в частности, редуктор, который прослушивает действие, отправленное этим создателем действия).

Как это можно проверить? Я думаю, что невозможно вставить редукторы в ложный магазин?

0 ответов

Другие вопросы по тегам