У меня есть несколько пользовательских промежуточных программ, которые принимают следующую сигнатуру действия.
// example of custom actions to be dealth by redux-middleware
const customAction = (arg1, arg2) => (dispatch) => ({
types: ["fetch_request", "fetch_success", "fetch_failure"],
promise: axios({ ...
})
});
Пользовательское промежуточное программное обеспечение redux
перехватывает эти действия с помощью types
prop и запускает обещание, используя fetch_request
, в зависимости от ответа запускается действие fetch_success
/ fetch_failure
. Важно отметить, что именно эти действия запрос / успех / сбой имеют обычную сигнатуру избыточного действия. IE:
// example of conventional redux action
const action = {
type: "abc",
payload: {...}
}
Я пытаюсь интегрировать redux-mock-store
с jest
для тестирования вышеуказанных действий. Используя redux-mock-store
, когда я despatch
действия с настраиваемым действием, как наверху:
// import of modules & other jest setup code ignored for this example
// mock store setup
const middlewares = [a,b];
const mockStore = configureStore(middlewares);
const store = mockStore(reducers);
it("test", () => {
// redux-mock-store doesnt like the following custom action
store.dispatch(customAction(a, b));
})
я получаю следующую ошибку от jest
о redux-mock-store
не нравится действие:
ошибка TS2345: Аргумент типа '(отправка: любой) => любой "не может быть назначен параметру типа" AnyAction ". Свойство 'type' отсутствует в типе '(dispatch: any) => any', но требуется для типа 'AnyAction'.
, потому что оно ожидает действия с обычной подписью, в то время как мое пользовательское действие имеет различную подпись для обработки redux middlewares
.
Как я могу проверить свои пользовательские действия или, более конкретно, могу ли я получить redux-mock-store
, чтобы эти пользовательские действия проходили так, чтобы промежуточное программное обеспечение могло их обрабатывать? Или я делаю что-то еще не так.