Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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 如何测试渲染到顶层的酶组分_Javascript_Enzyme_Grommet - Fatal编程技术网

Javascript 如何测试渲染到顶层的酶组分

Javascript 如何测试渲染到顶层的酶组分,javascript,enzyme,grommet,Javascript,Enzyme,Grommet,我正在测试一个呈现菜单的组件。套圈菜单组件将绝对定位的菜单呈现到文档的顶层,作为子菜单插入到正文。因此,它呈现在包装器的范围之外。我可以通过document.body.innerHTML(参考jsdom文档)找到它,但我想使用Ezyme与它交互。有什么建议吗 我的测试: const wrapper = mount( <MyComponent checkThis={checkThisSpy} /> ); wrapper.find('.spec-menu').simulate('

我正在测试一个呈现
菜单的组件。套圈
菜单
组件将绝对定位的菜单呈现到文档的顶层,作为子菜单插入到
正文
。因此,它呈现在包装器的范围之外。我可以通过
document.body.innerHTML
(参考jsdom文档)找到它,但我想使用Ezyme与它交互。有什么建议吗

我的测试:

const wrapper = mount(
    <MyComponent checkThis={checkThisSpy} />
);
wrapper.find('.spec-menu').simulate('click');
console.log(document.body.innerHTML); // Shows the absolute menu inserted into the body
const wrapper=mount(
);
wrapper.find('.spec菜单').simulate('click');
console.log(document.body.innerHTML);//显示插入到主体中的绝对菜单
套圈中执行此操作的行
document.body.insertBefore(drop.container,document.body.firstChild)


只是想寻找一些关于处理这个问题的最佳方法的指导。谢谢

最终,我们无法找到任何方法来测试使用酶本身的成分。因为我们使用jsdom来提供dom,
document
是全局可用的。我们最后写了一些期望,看起来像

expect(document.getElementsByClassName('my-top-level')).to.have.length(1)

普通的dom API足以测试我们想要的一切,只是有点笨重。

grommet组件呈现的菜单是另一个子组件吗?如果不是,它只是附加到dom的元素,对吗?在本例中,我认为您可以使用类似chaidom的东西来验证假文档元素中是否存在内部html元素。