Насмешливый APi вызывает шутку - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть DataService, который отвечает за мои вызовы API - я пытаюсь смоделировать вызов API в jest, но, похоже, он не работает.Я не уверен, что я делаю неправильно - мой DataService кажется неопределенным.

Вот функция

const getStepData = (id) => {
  return async dispatch => {
    try {
      dispatch(fetchStepBegin());

      const res = await DataService.fetchStepData(id);
      const sortedTask = sortedTaskData(res)

      const sortedStepData = sortStepData(res)
      const newData = createSortedDataForDragAndDrop(sortedTask, sortedStepData)
      dispatch(fetchRawStepDataSuccess(res.data))
      dispatch(fetchStepDataSuccess(newData))
    }
    catch (err) {
      dispatch(fetchStepError(err))
      throw (err)
    }
  }
}

Вот тест, который я написал - я почти уверен, что яиздеваюсь неправильно

  it('Data Api end point called with corrent studyId', () => {
    jest.mock(DataService);
    DataService.fetchStepData() = jest.fn()
    CellStepManagementOperations.getStepData(5);
    expect(DataService.fetchStepData).toHaveBeenCalledWith(5);

  });

1 Ответ

0 голосов
/ 14 февраля 2019

Думаю, проблема в том, что вы пытаетесь проверить асинхронных создателей действий, синхронно .Таким образом, ваша expect функция не ждет, пока ваш getStepData завершит свою работу.

Я столкнулся с чем-то очень похожим на то, что вы пытаетесь сделать, и я использовал библиотеку под названием перевождите-1010 * тестовый набор *.Пожалуйста, посмотрите часть о тестировании создателей асинхронных действий с сервисами здесь .Вы даже можете установить ложные возвращаемые значения для своих API-сервисов, которые я нашел очень полезными при тестировании.

Используя эту библиотеку, вы сможете await, чтобы ваш getStepData создатель асинхронных действий завершил дозапуск вашей функции expect.

Вам придется поиграться с вашим кодом, но он может выглядеть примерно так:

it('Data Api end point called with corrent studyId', () => {
  jest.mock(DataService);
  DataService.fetchStepData() = jest.fn()
  const dispatches = await Thunk(CellStepManagementOperations.getStepData).execute(5);
  expect(DataService.fetchStepData).toHaveBeenCalledWith(5);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...