用途:为前端组件、Hooks 和工具函数生成高质量、全面的测试,遵循项目既有约定与最佳实践。触发场景包括:要求为组件、Hook 或工具编写测试;审查现有测试完整性;提到 Vitest、React Testing Library、RTL 或 spec 文件;要求提升测试覆盖率;提到前端单元测试或集成测试;想了解前端测试模式。不适用:Playwright 等 E2E 测试;无代码上下文的概念性问题。
技术栈:Vitest 4+(测试运行器)、React Testing Library 16+(组件测试)、jsdom(测试环境)、TypeScript 5+(类型安全)。
主要能力与用法:优先运行特定测试而非全量套件,如 npx vitest run src/components/Button.spec.tsx、npx vitest run --grep "Button"、npx vitest run -t "should render";迭代开发用 watch 模式 npx vitest。测试文件命名为 ComponentName.spec.tsx,与组件同目录。采用 AAA(Arrange-Act-Assert)模式、黑盒测试、单一行为、语义化命名(should <behavior> when <condition>)。必测场景:渲染、Props、边界情况;条件场景:useState、useEffect、事件处理、API 调用、路由、useCallback/useMemo、Context、表单。覆盖率目标:函数与语句 100%,分支与行 >95%。
工作流:禁止一次性生成所有测试文件。对复杂组件或多文件目录,先分析规划并按复杂度排序(工具函数→Hooks→简单组件→中等组件→复杂组件→集成测试),逐个处理:写测试→运行→修复→再继续,当前文件通过前不进入下一个。目录测试需覆盖该路径下所有组件、Hooks 和工具。优先集成测试:直接导入真实项目组件,仅 mock API 服务、next/navigation 和复杂 Context Provider,不 mock 基础组件与同目录兄弟组件。
限制:模块不会自动 mock,全局 mock 位于 vitest.setup.ts(如 react-i18next、next/image),其他模块需在测试文件中局部 mock。详细指南见 references/workflow.md、mocking.md、async-testing.md、common-patterns.md、checklist.md。