我正在尝试使用Jest和ReactDOM以编程方式测试React表单提交。
以下是测试代码的片段:
var mycomp = <MyForm />;
var container = document.createElement('div');
ReactDOM.render(mycomp, container);
container.querySelector('#Project').value = "Test Project";
container.querySelector('#Description').innerHTML= "Test description";
// Submit the form
// (See: https://github.com/facebook/react/issues/6796#issuecomment-288350025)
container.querySelector('form').dispatchEvent(new Event('submit'));
expect(container.querySelector('#successMessage')).not.toBeNull(); // this fails!
在commit函数处理程序中,我更新状态,然后重新渲染后,应添加以“ successMessage”作为id的span元素。
不幸的是,提交处理程序被触发了(我可以在控制台上看到它的日志),但是成功消息范围没有显示。
为什么会这样呢?使用ReactDOM渲染的React组件上的更新不应该触发新的渲染并更新页面吗?
编辑:在此处看到问题的最小复制内容(失败的Jest测试在底部,已注释掉)https://codepen.io/pviotti/pen/YdKKpw