test-generator
测试用例生成器
为组件和函数自动生成测试用例骨架。
工作流程
1. 环境探测
- 读取
package.json确认测试框架(Jest / Vitest) - 检查测试配置文件(
jest.config.*/vitest.config.*) - 扫描现有测试文件了解命名和组织规范
- 确认测试工具库(React Testing Library / Vue Test Utils / Enzyme)
2. 分析目标代码
读取目标文件,提取:
- 导出的函数/组件名
- Props/参数类型定义
- 内部状态和副作用
- 事件处理函数
- 依赖的外部模块(用于 mock)
3. 生成策略
工具函数测试
describe('functionName', () => {
// 正常情况
it('应该 [预期行为] 当 [正常输入]', () => {})
// 边界情况
it('应该 [预期行为] 当输入为空', () => {})
it('应该 [预期行为] 当输入为 null/undefined', () => {})
// 异常情况
it('应该 [抛出错误/返回默认值] 当 [异常输入]', () => {})
})
React 组件测试
describe('ComponentName', () => {
// 渲染测试
it('应该正常渲染', () => {})
it('应该渲染所有必需的 UI 元素', () => {})
// Props 测试
it('应该正确显示 [prop] 内容', () => {})
it('应该使用默认值当 [prop] 未传入', () => {})
// 交互测试
it('应该在点击 [按钮] 后 [预期行为]', () => {})
it('应该在输入变化后 [预期行为]', () => {})
// 异步测试
it('应该在加载完成后显示数据', async () => {})
it('应该在请求失败时显示错误信息', async () => {})
})
Vue 3 组件测试
describe('ComponentName', () => {
// 渲染测试
it('应该正常渲染', () => {
const wrapper = mount(ComponentName, { props: {} })
expect(wrapper.exists()).toBe(true)
})
// Props 测试
it('应该响应 props 变化', async () => {
const wrapper = mount(ComponentName, { props: { value: 'initial' } })
await wrapper.setProps({ value: 'updated' })
expect(wrapper.text()).toContain('updated')
})
// 事件测试
it('应该触发 [事件名] 事件', async () => {
const wrapper = mount(ComponentName)
await wrapper.find('button').trigger('click')
expect(wrapper.emitted('eventName')).toBeTruthy()
})
})
4. 测试文件放置
遵循项目现有模式:
__tests__/目录:src/__tests__/ComponentName.test.tsx- 同级目录:
src/components/ComponentName.test.tsx - spec 后缀:
src/components/ComponentName.spec.tsx
5. Mock 策略
- API 请求:mock HTTP 客户端或使用 MSW
- 路由:mock router(useNavigate / useRouter)
- 状态管理:提供 mock store/provider
- 定时器:使用
vi.useFakeTimers()/jest.useFakeTimers()
重要原则
- 生成骨架,不猜测业务逻辑:测试体内用 TODO 标记需要补充的断言
- 覆盖基础场景:渲染、Props、交互、边界值
- 遵循 AAA 模式:Arrange → Act → Assert
- 测试行为而非实现:不测试内部 state,测试 UI 输出
More from sakumyz/skills
excel-to-markdown
将 Excel 文件转换为 Markdown 表格,支持合并单元格处理、多工作表输出、基础字体语义(粗体/斜体)与超链接转换。适用于将式样书、数据表转为可读的 Markdown 文档。
64excel-sheet-splitter
将Excel工作簿按工作表拆分为独立的Excel文件,每个工作表生成一个单独的文件。适用场景:(1) 将多工作表Excel文件拆分为单独文件,(2) 提取特定工作表为独立文件,(3) 分发合并工作簿中的工作表,(4) 为单独处理或分发创建工作表副本。
11redmine-ticket-to-task
Redmine 工单到开发计划的一站式流程。从 Redmine 票据自动提取需求、分析任务范围、拆解开发步骤、定位相关式样书和代码文件。适用于:(1) 收到新的 Redmine 课题/Bug/Todo 时,(2) 需要快速理解票据并制定开发计划时。需配合 redmine-search skill 使用。
9perf-analyzer
前端性能分析助手。分析组件渲染性能、Bundle 大小、网络请求效率,给出优化建议。适用于:(1) 页面加载慢排查,(2) 组件重渲染优化,(3) Bundle 体积优化,(4) 运行时性能瓶颈定位。
8smart-debugger
前端智能调试助手。从错误信息、控制台日志、异常行为描述快速定位问题代码并给出修复建议。适用于:(1) 运行时错误(TypeError、ReferenceError 等),(2) 控制台警告分析,(3) 页面白屏/卡顿排查,(4) 网络请求异常,(5) 组件渲染异常。与 BugHunter 区别:smart-debugger 聚焦快速定位,BugHunter 做完整闭环修复。
8redmine-search
Redmine 访问 Skill,仅查询指派给我的工单,提供通过 API Token 认证方式访问 Redmine 系统的功能。
8