[{"data":1,"prerenderedAt":107},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"prompt-test-generation":9},{"tools":4,"reviews":5},65,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},10,8,{"id":10,"title":11,"body":12,"description":93,"extension":94,"meta":95,"navigation":96,"path":97,"seo":98,"stem":99,"tags":100,"targetTools":102,"__hash__":106},"prompts\u002Fprompts\u002Ftest-generation.md","测试生成 Prompt：写出真正能 catch bug 的测试",{"type":13,"value":14,"toc":85},"minimark",[15,19,23,27,38,41,62,65,68,78],[16,17,18],"h2",{"id":18},"用法",[20,21,22],"p",{},"选中要测的函数，配合下面的 prompt：",[16,24,26],{"id":25},"prompt","Prompt",[28,29,35],"pre",{"className":30,"code":32,"language":33,"meta":34},[31],"language-text","请为下面这个函数生成单元测试。要求：\n\n**测试框架**：{vitest \u002F jest \u002F pytest \u002F go test — 替换}\n\n**必须覆盖**：\n1. **Happy path**：典型输入 → 期望输出\n2. **Edge cases**（每条单独一个 test）：\n   - 空输入（`null` \u002F `undefined` \u002F `[]` \u002F `''`）\n   - 极小值 \u002F 极大值（如果是数值\u002F字符串长度有意义）\n   - 边界值（off-by-one 候选）\n   - 异常输入（类型错误 \u002F 格式错误）\n3. **错误处理**：触发函数内部 error path，断言抛出正确的错误类型 + message\n\n**铁律**：\n1. **断言要强**。不要只 `expect(result).toBeDefined()`——要 `toEqual` \u002F `toBe` 具体值\n2. **每个 test 一个 assertion focus**。不要一个 `it()` 测三件事\n3. **测试名要描述行为**：\"returns null when input is empty array\"，**不是** \"test 1\"\n4. **不要 mock 不必要的东西**。能用真实输入就用真实输入\n\n**输出**：\n- 完整的 test 文件\n- 列出\"我故意没测的场景\" + 原因（性能测试 \u002F 集成测试 \u002F 不可达分支）\n\n函数：\n```\n\u003Cpaste here>\n```\n","text","",[36,37,32],"code",{"__ignoreMap":34},[16,39,40],{"id":40},"为什么有效",[42,43,44,48,59],"ul",{},[45,46,47],"li",{},"\"必须覆盖\"列出具体类型，避免 AI 只写 happy path",[45,49,50,51,54,55],{},"\"断言要强\"是关键——AI 默认倾向 ",[36,52,53],{},"toBeDefined","，但这种断言",[56,57,58],"strong",{},"捕捉不到 bug",[45,60,61],{},"\"故意没测的场景 + 原因\"暴露 AI 的盲点，给你机会补全",[16,63,64],{"id":64},"进阶",[20,66,67],{},"如果是改 bug 后想加防回归测试：",[69,70,71],"blockquote",{},[20,72,73,74,77],{},"\"我刚修了一个 bug：{bug 描述}。请只写",[56,75,76],{},"能 catch 这个 bug 回归","的最小测试集。不要写覆盖整个函数的全套测试——那是别的 PR。\"",[20,79,80,81,84],{},"防回归测试要",[56,82,83],{},"精准","，不要被全套测试稀释。",{"title":34,"searchDepth":86,"depth":86,"links":87},3,[88,90,91,92],{"id":18,"depth":89,"text":18},2,{"id":25,"depth":89,"text":26},{"id":40,"depth":89,"text":40},{"id":64,"depth":89,"text":64},"AI 写的测试经常是","md",{},true,"\u002Fprompts\u002Ftest-generation",{"title":11,"description":93},"prompts\u002Ftest-generation",[101],"测试",[103,104,105],"Claude Code","Cursor","Aider","Cj9Pd9Rw2F3EXHtYnM1tmg0sdbhm-U-Ww2TDgiyraws",1782316489341]