У меня есть следующий редукционный 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
?