我是 Jest/React 初学者。开玩笑地说it,我需要等到所有承诺都执行完毕后再进行实际检查。
我的代码与此类似:
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
    }
}
当组件被挂载时,render()运行两次:一次在构造函数运行后,一次在fetch()(in componentDidMount()) 完成并且链式 Promise 完成执行后)。
我的测试代码与此类似:
describe('MyComponent', () => {
    fetchMock.get('*', some_response);
    it('renders something', () => {
        let wrapper = mount(<MyComponent />);
        expect(wrapper.find(...)).to.have.something();
    };
}
无论我从什么返回it,它都会在第一次render()执行之后但在第二次之前运行。例如,如果我 return fetchMock.flush().then(() => expect(...)),则返回的承诺在第二次调用之前执行render()(我相信我能理解为什么)。
我怎样才能等到第二次render()被调用再运行expect()?