Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用酶测试反应模式-can';找不到门户_Javascript_Reactjs_Enzyme_React Modal - Fatal编程技术网

Javascript 用酶测试反应模式-can';找不到门户

Javascript 用酶测试反应模式-can';找不到门户,javascript,reactjs,enzyme,react-modal,Javascript,Reactjs,Enzyme,React Modal,我想测试一个用react-modal构建的组件。库使用入口在父级外部装载实际模态。enzyme中的find方法只查看从包装器元素开始的树,其中不包括open模式 据我所知,直到最近,门户网站还没有得到官方支持,但从React 16和Ezyme 3开始,它们应该是() 在DOM中,似乎可以通过安装了酶的组件访问开放门户,但要找到它并不容易。我见过使用REF(我不希望仅仅为了测试而添加REF)和document.querySelector(比处理ReactWrapper更糟糕)的策略 最有希望的策略

我想测试一个用react-modal构建的组件。库使用入口在父级外部装载实际模态。enzyme中的find方法只查看从包装器元素开始的树,其中不包括open模式

据我所知,直到最近,门户网站还没有得到官方支持,但从React 16和Ezyme 3开始,它们应该是()

在DOM中,似乎可以通过安装了酶的组件访问开放门户,但要找到它并不容易。我见过使用REF(我不希望仅仅为了测试而添加REF)和document.querySelector(比处理ReactWrapper更糟糕)的策略

最有希望的策略是,可以使用foundEl.node.portal()从其父级访问门户,但我还没有做到这一点(可能节点属性已被弃用,因为我使用它时,会出现一个错误:
试图访问ReactWrapper::node,该节点以前是上的私有属性
这是一个很好的例子,但已不再是,也不应该依赖。
请考虑使用GETelEnter()方法。

有没有人找到更好的策略或者让这个策略起作用了?我在酶3.1.1、反应酶适配器1.0.4和反应16.2上做参考

const wrapper=mount(
);
console.log('modal node',wrapper.find(ReactModal.node)//错误
console.log('modal element',wrapper.find(ReactModal.getElement(0))//带有道具等的ReactModal元素,但没有门户
console.log('from query',document.querySelector(`.ReactModalPortal`))//找到了它,但我不想这样做

ReactDOM.createPortal=jest.fn(模态=>modal)

有什么原因不能将门户的内容提取到新组件中,并进行测试吗?您可能不需要测试实际的门户功能。我正在对内容进行单元测试。我想编写一些集成测试,因为redux连接层中有相当多的逻辑(模式由一个连接的组件组成)。单独测试许多映射器和选择器也是可行的,但我们希望对一些核心功能进行足够的集成测试,以减轻端到端测试的压力。上的第二个任务似乎表明酶还不支持这一点。