A method to invoke setState()
on the root component instance, similar to how you might in the methods of the component, and re-renders. This method is useful for testing your component in hard-to-achieve states, however should be used sparingly. If possible, you should utilize your component's external API (which is often accessible via .instance()
) in order to get it into whatever state you want to test, in order to be as accurate of a test as possible. This is not always practical, however.
NOTE: Prior to v3.8.0 of enzyme, can only be called on a wrapper instance that is also the root instance.
nextState
(Object
): An object containing new state to merge in with the current statecallback
(Function
[optional]): If provided, the callback function will be executed once setState has completedReactWrapper
: Returns itself.
class Foo extends React.Component { constructor(props) { super(props); this.state = { name: 'foo' }; } render() { const { name } = this.state; return ( <div className={name} /> ); } }
const wrapper = mount(<Foo />); expect(wrapper.find('.foo')).to.have.lengthOf(1); expect(wrapper.find('.bar')).to.have.lengthOf(0); wrapper.setState({ name: 'bar' }); expect(wrapper.find('.foo')).to.have.lengthOf(0); expect(wrapper.find('.bar')).to.have.lengthOf(1);
© 2015 Airbnb, Inc.
Licensed under the MIT License.
https://airbnb.io/enzyme/docs/api/ReactWrapper/setState.html