У меня есть следующие компоненты:Проверка выполнения setTimeout внутри компонентаDidMount?
class PlayButton extends Component {
constructor() {
super();
this.state = { glow: false };
this.play = this.play.bind(this);
}
componentDidUpdate() {
if (this.props.media.currentTime === 0 && this.props.media.duration !== 0 && !this.state.glow) {
console.log('entering')
setTimeout(() => {
console.log('did time out')
this.setState({ glow: true });
}, 3000);
}
if (this.props.media.currentTime !== 0 && this.state.glow) {
this.setState({ glow: false });
}
}
И я хочу, чтобы проверить SetState внутри componentDidMount, но не может сделать это:
it('button shoould start glowing',() => {
const wrapper = mount(<PlayButton media={{ currentTime: 0, duration: 1 }}/>);
wrapper.update()
jest.runAllTimers();
expect(wrapper.state('glow')).toBe(true);
});
Любые мысли? Спасибо!
Но мне нужно было бы изменить свой компонент. Кроме того, я бы не тестировал, изменилось ли состояние, только что функция была выполнена. – Nicolas