Closed
Description
npm package versions
enzyme: 3.2.0
enzyme-adapter-react-16: 1.1.1
react: 16.2.0
react-dom: 16.2.0
Problem
When changing the state inside a component, componentDidUpdate
is not called.
Expected behaviour
When changing the state inside a component, componentDidUpdate
should get called.
Code example
import { shallow } from 'enzyme';
import React from 'react';
class Dropdown extends React.Component {
constructor(props) {
super(props);
console.log('constructor');
this.state = {
highlightedIndex: 0,
};
this.handleMouseOver = this.handleMouseOver.bind(this);
}
componentDidUpdate() {
console.log('componentDidUpdate');
}
handleMouseOver() {
console.log('handleMouseOver', 0);
this.setState({
highlightedIndex: 1,
}, () => {
console.log('handleMouseOver', 1);
});
console.log('handleMouseOver', 2);
}
render() {
console.log('render');
return <div onMouseOver={this.handleMouseOver}>Please hover me</div>;
}
}
it('should work', () => {
const wrapper = shallow(<Dropdown />);
wrapper.simulate('mouseover');
wrapper.update();
});
Console output
console.log .../__tests__/Dropdown.js:8
constructor
console.log .../__tests__/Dropdown.js:34
render
console.log .../__tests__/Dropdown.js:22
handleMouseOver 0
console.log .../__tests__/Dropdown.js:34
render
console.log .../__tests__/Dropdown.js:27
handleMouseOver 1
console.log .../__tests__/Dropdown.js:30
handleMouseOver 2