Тестирование асинхронных действий при редуксе с Typescript - PullRequest
0 голосов
/ 14 февраля 2019

Эй, ребята, я пытаюсь протестировать своих создателей асинхронных действий с 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, но код не компилируется из-за этого..

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