【发布时间】:2015-07-14 09:37:28
【问题描述】:
使用 React 13.2 并希望通过类似 gist 中所示的设置来测试生命周期。如果我不停止后续渲染(通过 shouldComponentUpdate 方法),那么任何事情都会导致渲染(在初始之后)以 DOMException Wrong Document 爆炸:
DOMException: Wrong document
at core.Node.insertBefore (D:\development\projects\fsm\node_modules\jsdom\lib\jsdom\level1\core.js:583:13)
at core.Node.insertBefore (D:\development\projects\fsm\node_modules\jsdom\lib\jsdom\level2\events.js:326:32)
at insertChildAt (D:\development\projects\fsm\node_modules\react\lib\DOMChildrenOperations.js:34:14)
at Object.DOMChildrenOperations.processUpdates (D:\development\projects\fsm\node_modules\react\lib\DOMChildrenOpertions.js:106:11)
JSDOM 保释是因为父节点不是文档,并且它与插入的子节点不共享同一个所有者文档。是的。除非 React 在幕后做一些时髦的事情,否则拥有的文档怎么可能是全局文档。
很惊讶我没有看到更多人遇到类似问题?我的 Mocha 设置和渲染的 JSX 组件都没有什么奇怪的地方。加上初始渲染很顺利。
【问题讨论】:
-
找到答案 (groups.google.com/forum/#!msg/reactjs/5UlF-mBsG2o/B-Gx8lrWDbgJ) 感谢 Ben Alpert 和 Jonathan Kim 指出尽管在每个测试用例之前都创建了一个实例,但 React 会缓存文档。
标签: reactjs mocha.js jsdom reactjs-testutils