首页 > 教程攻略 > ai资讯 >MarsCode单元测试提示词如何避免一眼模板感

MarsCode单元测试提示词如何避免一眼模板感

来源:互联网 时间:2026-06-17 13:38:05

用Jest写函数calculateTotal的单元测试,参数为number[],返回number。只测三个用例:[1,2]→3[-1,-2]→-3[]→0。不写describe,不写test.only,不加中文注释。

MarsCode单元测试提示词如何避免一眼模板感

用MarsCode生成单元测试时,提示词一写“请为这个函数写一个单元测试”,AI立刻输出带注释、带描述、带setup/teardown的完整模板——但你的项目里根本不用Jest.describe,也不允许测试文件里出现中文注释,更不接受返回空对象而非抛错的容错逻辑。

删掉所有“请”字开头的礼貌句式

把“请为calculateTotal编写一个Jest单元测试,覆盖正数、负数和零三种情况”直接改成:

【用Jest写函数calculateTotal的单元测试,参数为number[],返回number。只测三个用例:[1,2]→3、[-1,-2]→-3、[]→0。不写describe,不写test.only,不加中文注释】

这一步必须做。MarsCode看到“请”就激活对话模式,自动补全引导语、结构说明和安全兜底,这些全是后续手动删除的噪音。

绑定你正在编辑的真实代码上下文

方法一

:把当前文件前五行粘进提示词。例如你光标停在src/utils/math.ts第12行,函数定义是:export function calculateTotal(items: number[]): number {……那么提示词开头就写:

export function calculateTotal(items: number[]): number {
  if (items.length === 0) return 0;
  return items.reduce((a, b) => a + b, 0);
}

在此基础上,生成Jest测试文件math.test.ts,要求:断言全部用toBe,不mock任何模块,覆盖空数组、单元素、多元素三类输入。

方法二

:如果你刚删掉一段报错代码,就把错误信息带上。比如控制台显示TypeError: Cannot read property 'length' of undefined,那就写:

【上一步调用calculateTotal(undefined)崩溃了。请补一个测试用例验证该输入,并让函数内部加非空判断,返回0】

【不粘上下文=生成通用模板;粘错上下文=生成不可用代码】

。MarsCode依赖AST解析,只认你给的那几行真实代码,不认你口头说的“这个函数在utils里”。

强制禁用三类AI惯性表达

第一步

:在提示词末尾加硬约束——禁止出现以下内容:①“以下是测试代码”或类似引导语;②注释中写“// 测试边界条件”这类无信息量说明;③测试文件里出现console.logprocess.exit

第二步

:限定断言风格——所有expect必须用链式调用,如expect(calculateTotal([1,2])).toBe(3),不接受expect(calculateTotal([1,2])).toEqual(3)

第三步

:指定文件行为——只输出math.test.ts文件的完整内容,无空行、无语言标识符、无markdown包围,首行必须是import { describe, it, expect } from '@jest/globals';