Current behavior
min-repro here: https://github.com/nicholasrice/enzyme-react-wrapper-update-repro
Using mount to mount a component, calling the update method of the returned ReactWrapper instance does not seem to be forcing a re-render. With slight changes, I implemented the example from https://airbnb.io/enzyme/docs/api/ReactWrapper/update.html and am expierencing a test failure.
On a slight aside, I think the assertions being made in the above documentation should be 1 for the first call and 2 for the second call, instead of 0 for the first call and 1 for the second.
const React = require('react');
const Enzyme = require('enzyme');
const Adapter = require('enzyme-adapter-react-16');
Enzyme.configure({ adapter: new Adapter() });
test("ReactWrapper.update should re-render a react component", () => {
const spy = jest.fn();
class ImpureRender extends React.Component {
constructor(props) {
super(props);
this.count = 0;
}
render() {
this.count += 1;
spy(this.count);
return React.createElement("div", {}, this.count);
}
}
const wrapper = Enzyme.mount(React.createElement(ImpureRender));
expect(spy).toHaveBeenCalledTimes(1)
// Update the component - should force re-render per https://github.com/airbnb/enzyme/blob/master/docs/api/ReactWrapper/update.md
wrapper.update();
expect(spy).toHaveBeenCalledTimes(2)
});
Expected behavior
I would expect that calling the update method of a ReactWrapper would call the render method of the mounted component.
Your environment
API
Version
| library |
version |
| enzyme |
3.9.0 |
| react |
16.8.4 |
| react-dom |
16.8.4 |
| react-test-renderer |
16.8.4 |
| adapter (below) |
1.10.0 |
Adapter
Current behavior
min-repro here: https://github.com/nicholasrice/enzyme-react-wrapper-update-repro
Using
mountto mount a component, calling theupdatemethod of the returnedReactWrapperinstance does not seem to be forcing a re-render. With slight changes, I implemented the example from https://airbnb.io/enzyme/docs/api/ReactWrapper/update.html and am expierencing a test failure.On a slight aside, I think the assertions being made in the above documentation should be
1for the first call and2for the second call, instead of0for the first call and1for the second.Expected behavior
I would expect that calling the
updatemethod of aReactWrapperwould call the render method of the mounted component.Your environment
API
Version
Adapter