Я пытаюсь проверить и изменилось ли состояние соответствующим образом после запуска функции в 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()
Я такжехочу заметить, что в приложении все работает так, как я хочу, мои опасения связаны только с тестовым освещением.
Спасибо!