SuperAPI AI 工具集

test-driven-development

编程与开发

查看项目

更新于 10-15 17:26

技能介绍

用途:在实现任何功能或修复缺陷前,先写测试。核心原则是:没亲眼看到测试失败,就不知道它是否在测试正确的东西。纪律是“先写失败测试,再写最小实现代码”,违反字面规则即违反精神。

主要能力与流程:遵循红-绿-重构。红灯阶段写一个测试用户可见行为的最小测试,命名清晰,只测一件事;必须运行 npx jest path/to/component.test.tsx 亲眼看它失败,确认失败原因正确(缺功能,而非拼写错误)。绿灯阶段只写让测试通过的最简代码,不加额外功能;再次运行确认通过、其它测试仍通过、输出干净。重构阶段仅在绿灯后进行,去重、改命名、抽离辅助函数,保持测试绿。然后为下一个功能写下一个失败测试。

技术栈:Jest 通过 jest-expo 预设运行,不要直接安装 Jest 30+,使用 jest-expo 捆绑的 Jest 版本;命令为 npx jest。组件测试用 @testing-library/react-native(render、screen、fireEvent、userEvent、waitFor、findBy* 查询、renderHook);断言用 Jest 匹配器及 @testing-library/jest-native 扩展匹配器。测试通过后的真机 UI 验证可借助 agent-device 技能。

适用场景:新功能、缺陷修复、重构、行为变更一律适用。例外为一次性原型、生成代码、配置文件,需先征询人类搭档。

限制与常见问题:不写测试直接写代码,应删除重来,不留作参考、不边写测试边改写、不看它。测试立即通过说明测的是已有行为,要修正测试。查询优先级为 getByRole、getByText、getByPlaceholderText、getByDisplayValue、getByLabelText,getByTestID 为最后手段。异步用 waitFor 或 findBy*,不用任意延时。测试难写往往意味着设计耦合,应用依赖注入;需大量 mock 时考虑简化接口。act() 警告应将状态更新包进 act() 或改用 waitFor/findBy*。详细 API、查询模式与 v13/v14 差异见 react-native-testing 技能;避免的测试反模式见 @testing-anti-patterns.md。未在资料中说明收费、价格或平台支持情况。