小编Cga*_*ati的帖子

使用 Enzyme 测试 React Modals - 找不到门户

我想测试一个用react-modal构建的组件。该库使用门户将实际模式安装在父级之外。酶中的 find 方法仅查找从包装元素开始的树,其中不包括开放模式。

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

看起来开放门户可以通过安装酶的组件在 DOM 中访问,但找到它并不容易。我已经看到使用 refs 的策略(我宁愿不只是为了测试而添加)和 document.querySelector (比处理 ReactWrapper 更糟糕)。

最有前途的策略声称可以使用foundEl.node.portal( react-modal-563)从其父级访问门户,但我还没有让它发挥作用(看来节点属性可能已被弃用,因为当我使用它时,我收到错误: Attempted to access ReactWrapper::node, which was previously a private property on Enzyme ReactWrapper instances, but is no longer and should not be relied upon. Consider using the getElement() method instead.

有没有人找到更好的策略或让这个策略发挥作用?我使用Enzyme 3.1.1、React Enzyme Adapter 1.0.4和React 16.2作为参考。

const wrapper = mount(
      <div>
          <Provider store={store}>
              <MyModal isOpen={true} />
          </Provider>
      </div>
);
console.log('modal node', wrapper.find(ReactModal).node) // error
console.log('modal element', …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs enzyme react-modal

5
推荐指数
1
解决办法
2817
查看次数

标签 统计

enzyme ×1

javascript ×1

react-modal ×1

reactjs ×1