I'm a Jest/React beginner. In jest's it
I need to wait until all promises have executed before actually checking.
My code is similar to this:
export class MyComponent extends Component {
constructor(props) {
super(props);
this.state = { /* Some state */ };
}
componentDidMount() {
fetch(some_url)
.then(response => response.json())
.then(json => this.setState(some_state);
}
render() {
// Do some rendering based on the state
}
}
When the component is mounted, render()
runs twice: once after the constructor runs, and once after fetch()
(in componentDidMount()
) finishes and the chained promises finish executing).
My testing code is similar to this:
describe('MyComponent', () => {
fetchMock.get('*', some_response);
it('renders something', () => {
let wrapper = mount(<MyComponent />);
expect(wrapper.find(...)).to.have.something();
};
}
Whatever I return from it
, it runs after the first time render()
executes but before the second time. If, for example, I return fetchMock.flush().then(() => expect(...))
, the returned promise executes before the second call to render()
(I believe I can understand why).
How can I wait until the second time render()
is called before running expect()
?