Тестирование API Call in React - состояние не обновляется - PullRequest
0 голосов
/ 19 октября 2018

Я хочу проверить, обновляется ли мое состояние после вызова API в моем компоненте.У меня есть метод, скажем, method1(), и в этом методе он вызывает fetch и устанавливает состояние для результатов.Вот метод:

method1 = () => {
if (this.state.state1 !== "") {
  fetch('api')
  .then((resp) => resp.json())
  .then((data) => {
    this.setState({ state2: data });
  })
  .catch((error) => {
    console.log(error);
  });
}

}

В моем тестовом файле я уже высмеивал API с fetch-mock, и вот тест, пытающийся проверить это:

it('updates the state after the api call', () => {
  const instance = component.instance();
  instance.method1();
  expect(component.state('state2')).toBe(MOCK_DATA);
});

Мой MOCK_DATA определяется вместе с фиктивными выборками и компонентом (мелкими) в beforeEach()

Когда я запускаю это, state2 все еще находится в своем первоначальном состоянии ([]), ноЯ ожидаю, что это будет заполненный массив.

Я также попытался выполнить асинхронный тест и использовать await, но получаю те же результаты.

Любая помощь будет принята!Спасибо!

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