javascript - 如何测试渲染到顶层的 enzyme 成分

标签 javascript enzyme grommet

我正在尝试测试呈现 grommet 的组件菜单 组件。索环 Menu 组件将绝对定位的菜单呈现到文档的顶层,作为子级插入到 body 中。因此它呈现在包装器的范围之外。我可以使用 document.body.innerHTML (引用 jsdom 文档)找到它,但我想使用 enzyme 与它交互。有什么建议吗?

我的测试:

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

索环中执行此操作的行 document.body.insertBefore(drop.container, document.body.firstChild);https://github.com/grommet/grommet/blob/master/src/js/utils/Drop.js#L197

只是在寻找一些有关处理此问题的最佳方法的指导。谢谢!

最佳答案

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

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

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

关于javascript - 如何测试渲染到顶层的 enzyme 成分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215731/

相关文章:

Javascript 使用计算值、级别转换和新对象创建进行解构

javascript - Google map 未显示 domainname.com

javascript - TypeError : _enzyme2. default.configure 不是函数

reactjs - Grommet UI——自定义配色方案

javascript - React Router HashRouter 插入一个 ?网址中的 # 之前

php - 在两个表单之间传递值

javascript - 如何使用原型(prototype)获取 anchor 标记的父ID?

reactjs - 使用 enzyme 进行浅层渲染简单测试不起作用

javascript - 为什么我的 `react-scripts` 测试无法识别 Jest 函数 `toMatchObject`?

javascript - 哪些组件正在添加情感 css 全局样式