测试
测试生成 Prompt:写出真正能 catch bug 的测试
AI 写的测试经常是
适用:Claude CodeCursorAider
用法
选中要测的函数,配合下面的 prompt:
Prompt
请为下面这个函数生成单元测试。要求:
**测试框架**:{vitest / jest / pytest / go test — 替换}
**必须覆盖**:
1. **Happy path**:典型输入 → 期望输出
2. **Edge cases**(每条单独一个 test):
- 空输入(`null` / `undefined` / `[]` / `''`)
- 极小值 / 极大值(如果是数值/字符串长度有意义)
- 边界值(off-by-one 候选)
- 异常输入(类型错误 / 格式错误)
3. **错误处理**:触发函数内部 error path,断言抛出正确的错误类型 + message
**铁律**:
1. **断言要强**。不要只 `expect(result).toBeDefined()`——要 `toEqual` / `toBe` 具体值
2. **每个 test 一个 assertion focus**。不要一个 `it()` 测三件事
3. **测试名要描述行为**:"returns null when input is empty array",**不是** "test 1"
4. **不要 mock 不必要的东西**。能用真实输入就用真实输入
**输出**:
- 完整的 test 文件
- 列出"我故意没测的场景" + 原因(性能测试 / 集成测试 / 不可达分支)
函数:
```
<paste here>
```
为什么有效
- "必须覆盖"列出具体类型,避免 AI 只写 happy path
- "断言要强"是关键——AI 默认倾向
toBeDefined,但这种断言捕捉不到 bug - "故意没测的场景 + 原因"暴露 AI 的盲点,给你机会补全
进阶
如果是改 bug 后想加防回归测试:
"我刚修了一个 bug:{bug 描述}。请只写能 catch 这个 bug 回归的最小测试集。不要写覆盖整个函数的全套测试——那是别的 PR。"
防回归测试要精准,不要被全套测试稀释。