用途:在 TypeScript 项目中添加或改进单元、集成、端到端测试,为缺陷补回归测试,或在重构时验证行为未被破坏。
主要能力:先检测仓库现有测试栈(查看 package.json、jest.config.、vitest.config.、playwright.config.、cypress.config. 及 test/unit/e2e 脚本),并沿用既有框架与目录约定,不擅自引入新栈。无现成栈时,Node/后端/共享库优先 Vitest 或 Jest;React/UI 组件用 Testing Library 配合现有运行器;端到端优先 Playwright,仓库已用 Cypress 或用户明确要求时用 Cypress;Mocha、Ava、Node 内置测试运行器同样尊重。
使用方式:测试文件按仓库约定命名(.test.ts、.test.tsx、*.spec.ts 等),放在 tests 或组件旁。用 describe/it 写清晰名称,异步代码使用 await,避免悬空 Promise。Vitest/Jest 用 vi.fn()/jest.fn() 与 vi.mock()/jest.mock(),仅在必要时使用假定时器。React 测试用 render、screen、userEvent,优先 getByRole、getByLabelText 等语义查询,避免 test ID。Playwright/Cypress 复用现有 fixture 与辅助函数,保持测试独立、不依赖执行顺序。运行沿用 npm test、pnpm test、npx vitest、npx jest、npx playwright test 等现有脚本。
适用场景:新增或更新测试、修复缺陷后补回归、重构前建立信心、仓库已有测试工具但需要“加测试/改测试”。
限制与原则:测试行为而非实现细节,服务测公共 API,UI 测用户可见与可操作内容;保持测试快速、确定、失败信息明确;最小化 mock,只 mock 外部服务、网络与慢依赖,不 mock 自身业务逻辑;避免滥用快照、直接测私有方法、过度 mock 导致测试镜像实现、依赖真实时间或全局状态的脆弱测试;尽量使用真实类型或最小接口,不用 as any 掩盖类型错误;优先少量高价值测试而非机械式大套件。资料未提供具体安装命令、版本要求或收费信息。