Как я могу выполнить модульное тестирование тела метода в моем componentDidMount () в React? - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь запустить модульный тест, используя Jest in React, на моем методе componentDidMount() и только на этом методе.Мой componentDidMount() выглядит следующим образом:

componentDidMount() {
    //Delay to simulate welcome loading screen
    const delay = 2000;
    setTimeout(() => {
      this.setState({ appLoaded: true }); //this line has no coverage, according to IDE
    }, delay);
  }

Я пытался следовать этому , и я получил кучу ошибок.Одно из больших отличий заключается в том, что в данном примере есть метод componentDidMount(), который не похож на мой.Мой componentDidMount() имеет локальную функцию, а их нет.Как я могу протестировать это модулем?

также, в частности, я хочу протестировать строку с надписью this.setState({ appLoaded: true });, так как это линия, которая, как говорят, не покрыта.

1 Ответ

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

Когда вы используете setTimeout, имеет смысл использовать фальшивые таймеры: runTimersToTime или advanceTimersByTime (если вы используете jest v ^ 22.0.0).Т.е.:

import { shallow } from 'enzyme';

jest.useFakeTimers();

it('tracks app loaded', () => {
  const wrapper = shallow(<YourAwesomeComponent />);
  expect(wrapper.state('appLoaded')).toBeFalsy();
  jest.runTimersToTime(2000);
  expect(wrapper.state('appLoaded')).toBeTruthy();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...