Эй, ребята, я пытаюсь протестировать своих создателей асинхронных действий с Typescript, но получаю ошибку типа, которую мне не удается решить.
Это мои действия:
export const loadCurrentUserRequest = () => ({
type: LOAD_CURRENT_USER_REQUEST
})
export const loadCurrentUserSuccess = (payload: any) => ({
type: LOAD_CURRENT_USER_SUCCESS,
payload
})
export const loadCurrentUserFailure = (payload: any) => ({
type: LOAD_CURRENT_USER_FAILURE,
payload
})
И это мой создатель асинхронных действий:
export const loadCurrentUser = () => {
return async (dispatch: Dispatch<any>) => {
dispatch(loadCurrentUserRequest())
try {
const response = await get(`api/currentuser`)
if (!response.ok) {
dispatch(loadCurrentUserFailure({ type: null, message: 'error' }))
} else {
const json = await response.json()
dispatch(loadCurrentUserSuccess(json))
}
return response
} catch (err) {
dispatch(loadCurrentUserFailure({ type: err.name, message: err.message }))
logError(err.name, err.message)
return err
}
}
}
Функция 'get' - это промежуточное ПО, которое я создал для обработки вызова GET 'fetch' (он добавляет некоторые вещи в заголовок и т. Д.).
Это мой тест:
it('create an action to load the current user', () => {
const middlewares = [thunk]
const mockStore = configureMockStore(middlewares)
const store = mockStore()
const expectActions = [{ type: LOAD_CURRENT_USER_REQUEST }]
store.dispatch(actions.loadCurrentUser())
expect(store.getActions()).toEqual(expectActions)
})
Я получаю эту ошибку в своей консоли:
Argument of type '(dispatch: Dispatch<any>) => Promise<any>' is not assignable to parameter of type 'AnyAction'.
Property 'type' is missing in type '(dispatch: Dispatch<any>) => Promise<any>' but required in type 'AnyAction'.
Я не уверен, что я сделал здесь неправильно, я посмотрел наПример редукции для проверки создателей асинхронных действий, и это аналогично.Я не могу понять, откуда возникла моя проблема.
Я знаю, что мне придется высмеивать мои вызовы fetch
API и обновлять переменную expectActions
, но код не компилируется из-за этого..