测试 React 元素的 children 是否没有越过 parent 轮廓

Test if children of react element are not crossing the parent outline

有没有办法测试 React 元素的 sub-components/children 没有越过 parent 轮廓?

例如:

在上图中,测试应该失败,因为 child 穿过 parent

outline

Code Sandbox 与组件

注:

将元素 .getBoundingClientRect() return 0 用于所有属性(topbottomleftright等...)

您可以使用 intersectionObserver,它会在子项进入父项的视口时触发一个事件。实际上有一个反应包装器 react-intersection-observer

这不是您可以通过 CLI/test 运行ner 进行单元测试的东西,组件必须呈现为“实时”视图,而不是任何虚拟 DOM ,就像许多单元测试 运行 人使用的 jsdom 一样。请注意,即使是开玩笑的快照也只比较 DOM 结构而不是计算视图。

这也不会被视为单元测试,因为您现在正在测试两个组件(单元)如何相互作用(集成)。

为此,您需要 cypress, selenium, or puppeteer 到 运行 集成测试并测量呈现的 DOM。