SuperAPI AI 工具集

jest-rtl-testing

测试与质量

查看项目

更新于 10-15 23:48

技能介绍

用途:用于编写新的 React 组件测试、审查或重构已有测试、调试测试失败以判断是否误用 API,以及优化测试的可读性与可维护性。不适用于纯函数单元测试(无 DOM 或 React)、端到端测试(应使用 Playwright、Cypress 等)、性能测试或视觉回归测试。

强制前置检查:编写任何测试前必须检查项目是否存在 AGENTS.md 并阅读其 Testing 部分;若存在,其规则优先级最高,本技能原则作为基线指导与补充最佳实践。

核心原则:测试应与用户操作应用的方式一致,而非测试实现细节;优先遵循项目规则,断言用户所见与所做,而非内部状态;注意异步处理,元素出现用 findBy*,消失用 waitForElementToBeRemoved;使用真实交互,优先 @testing-library/user-event 而非 fireEvent;HTTP 请求优先用 MSW 模拟,避免手写 fetch/axios mock。

查询优先级(需结合上下文):getByLabelText(表单字段,性能最佳)、getByText(非交互内容)、getByRole(仅小范围组件,利于可访问性校验)、getByPlaceholderText/getByDisplayValue,最后才是 getByTestId(需在 AGENTS.md 中说明原因)。注意 getByRole 在大型视图上可能较慢,元素众多时优先 getByLabelText 或 getByText。查询类型:getBy* 元素必须存在(找不到抛错);queryBy* 用于断言不存在(返回 null);findBy* 用于异步等待(返回 Promise)。

调试:用 screen.debug() 检查 DOM;检查查询选择是否正确;用 screen.logTestingPlaygroundURL() 寻找更合适的查询。

更详细示例与模式见资料中引用的 references/query-cheatsheet.md 与 references/common-patterns.md;具体安装与运行命令暂未提供。