用途:把 Enzyme 测试迁移到 @testing-library/react,按 1:1 移植,保留原有测试意图,不重构为集成式测试,也不移除 mock。
主要能力:替换导入(shallow/mount 改为 render,findTestSubject 改为 screen.getByTestId);迁移选择器与断言(test subject、CSS 选择器、复杂遍历、全局/portal 元素);处理快照(shallow 快照改为 container.children[0],删除旧 .snap 后用 yarn test:jest --updateSnapshot <path> 重新生成);用 mock 模式替代 .prop()/.props();处理异步与状态更新(findBy*、waitFor、waitForElementToBeRemoved);清理因 shallow 隐藏 provider 而失效的死测试。
使用方式:按工作流替换导入、渲染、选择器、断言,更新快照并运行测试,补齐缺失的 mock/provider。Kibana 场景可用 @kbn/test-jest-helpers 的 renderWithKibanaRenderContext、renderWithI18n、renderWithEuiTheme 等 RTL 辅助函数;需要 CSS 选择时可用 @kbn/test-subj-selector 的 subj()。
适用场景:Kibana 等使用 Enzyme 的 React 项目迁移测试。
限制:RTL 快照更大属预期,不要为缩小快照加 mock;portal 组件(弹窗、浮层、提示)不能用快照,需用定向断言;避免用增大 waitFor 超时来修复失败;userEvent 在 CI 中性能较差,简单交互优先 fireEvent。