Шутка: Как издеваться над редуксом, вызывая другого? - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть следующий редукционный thunk:

function thunkOne() {
    return dispatch => {
        callToApi().then(() => {
            dispatch(someNonThunkAction());
            dispatch(thunkTwo());
        });
    }
}

function thunkTwo() {
   return dispatch => {
      anotherCallToApi.then(dispatch(someOtherAction()));
   }
}

Я бы хотел проверить только thunkOne и макетировать thunkTwo, чтобы он не выполнялся при тестировании thunkOne.

Я пытался сделать это, но это не работает:

import * as someActions from './actions';

it ('thunkOne should dispatch someNonThunkAction and thunkTwo', () => {
    someActions.thunkTwo = jest.fn();
    const expectedActions = [
            { type: SOME_NON_THUNK_ACTION, data: {} }
        ],
        store = mockStore(initialState);

    store.dispatch(someActions.thunkOne()).then(() => {
        expect(store.getActions()).toEqual(expectedActions);
        expect(someActions.thunkTwo).toHaveBeenCalled();
    });

    someActions.thunkTwo.mockRestore();
});

При выполнении этого теста я получаю следующую ошибку:

[ОШИБКА] Действия должны быть простыми объектами. Используйте пользовательское промежуточное ПО для асинхронных действий.

Как мне высмеивать thunkTwo и проверять только thunkOne?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...