Как проверить, что состояние изменилось после setTimeout в Jest и Enzyme - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь проверить и изменилось ли состояние соответствующим образом после запуска функции в Jest и Enzyme. Эта функция имеет setTimeout внутри, который вызывает другую функцию и в зависимости от результата, что функция меняет или не меняет состояние. Я также изо всех сил пытаюсь получить покрытие линий для линий в функции setTimeout.

В данный момент у меня есть функция обратного вызова onStart, которая передается как компонент компоненту. Здесь можно проверить текущее состояние, и если для showAuth задано значение true, значения, отображаемые и customCSS, соответственно изменяются.

function onStart(){
  const that = this;
  setTimeout(() => {
    if(that.state.showAuth){
      this.setState({ shown: true, customCSS: `visible` })
    }
  }, 100);
}

Эта функция передается в качестве опоры следующему компоненту * 1006. *

  <CheckUser
    onSuccess={responseHandler}
    onStart={onStart}
  />

и компонент примет информацию и отобразит всплывающее окно, если showAuth в состоянии true.

Теперь для моих тестов у меня так:

describe('onStart', () => {
    const wrapper = shallow(<UserInformation />);

/*the component I'm making a shallow copy of has the CheckUser component as a child*/

    it('runs setTimeout', () => {
      jest.useFakeTimers();
      wrapper.instance().onActivate()
      expect(setTimeout).toHaveBeenCalledTimes(1);
    });
})

Теперь тесты пройдены, но в строках setTimeout нет покрытия. Я также не уверен, как именно проверить, изменилось ли состояние, но в данный момент я пытаюсь сосредоточиться на том, как именно охватить все, что находится в setTimeout в onStart()

Я такжехочу заметить, что в приложении все работает так, как я хочу, мои опасения связаны только с тестовым освещением.

Спасибо!

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