Agentic 测试完整指南:从跑通 pnpm test 到处理快照失败
【免费下载链接】agenticYour API ⇒ Paid MCP. Instantly.项目地址: https://gitcode.com/GitHub_Trending/ag/agentic
Agentic 是一款适用于任意 LLM 与 TypeScript AI SDK 的 AI 代理标准库,它自己的代码库就是学习Agentic 测试的现成范本——像这样的基础库若不把测试做扎实,上层应用的稳定性就无从谈起。下文按"第一次接触这个仓库会撞上的 4 个真实问题"逐一拆解:为什么 npm 跑不了、pnpm test到底在跑什么、测试与快照文件去哪找、快照挂了怎么办。AI 代理库测试该怎么写,仓库里已经给出了标准答案。
🔑 问题一:装了 Node 却跑不了,npm 被拒绝?
根目录 package.json 里有两个硬性约束:
preinstall: npx only-allow pnpm:用 npm/yarn 安装会直接报错退出,必须用 pnpm(仓库锁定pnpm@10.17.0)engines.node >= 20:Node 版本过低会在安装阶段就失败
正确的起步姿势只有这四步:
git clone https://gitcode.com/GitHub_Trending/ag/agentic cd agentic pnpm install pnpm test如果第一步就报错,先确认pnpm --version和node --version,而不是去改配置。
⚙️ 问题二:pnpm test 为什么跑得久、输出这么多?
看根目录脚本:"test": "turbo test --concurrency=32",且pretest会先触发build。再看 turbo.json 里test任务的定义,它聚合了四类检查:
test:format— Prettier 格式检查test:lint— ESLint 全仓扫描test:typecheck— 各包tsc --noEmittest:unit— 真正的单元测试,每个包内执行vitest run
所以测试框架是vitest,只是被 Turbo 按依赖顺序调度。日常开发不必每次都全量跑,两个提速命令:
pnpm test:unit:只跑单元测试,跳过 lint/格式/类型检查- 只验证单个包:
pnpm --filter @agentic/platform-core test:unit
🗂️ 问题三:Agentic 单元测试与快照测试文件在哪找?
约定很简单:测试文件与源码同目录,一律*.test.ts结尾。例如 utils.test.ts 挨着被测的utils.ts,一条典型的用例长这样:
test('pick', () => { expect(pick({ a: 1, b: 2, c: 3 }, 'a', 'c')).toEqual({ a: 1, c: 3 }) })- 简单断言(
toEqual/toBe)适合纯函数:输入固定、输出固定 - 快照断言(
toMatchSnapshot)适合结构复杂的输出:首次运行生成基线,之后每次比对
快照文件存在测试文件旁的__snapshots__目录里,如snapshots目录 下的utils.test.ts.snap,内容就是一段被固化下来的字符串。仓库里最大的快照集中在 parse-structured-output.test.ts.snap(25 处断言);连 e2e 层也有响应级快照 http-e2e.test.ts.snap。
🧯 问题四:测试红了怎么读?快照过期怎么更新?
读失败输出:Turbo 日志按任务聚合,报错包会标红并置顶,vitest 部分会直接给出"期望值 vs 实际值"的 diff。比如sha256的快照把结果钉死成定长字符串,一旦哈希实现被改,快照立刻不匹配——这种红是"提示你输出变了",而不是测试写错了。
快照过期的判断流程:
- 先看 diff:变化是否符合本次改动意图(格式化调整、算法升级等)
- 符合 → 更新快照;不符合 → 改的是代码,不是快照
- 确认无误后,在对应包内执行更新:
pnpm --filter @agentic/platform-core exec vitest run -u⚠️ 不要习惯性对全仓执行-u——它会把所有"不匹配"静默吞掉,真正需要警惕的行为变更也会被一起覆盖。
✅ 接下来 3 步
- 装好 pnpm 后先跑
pnpm test:unit,熟悉各包失败输出长什么样 - 给一个新函数写
*.test.ts,纯函数用toEqual,复杂输出用toMatchSnapshot - 每次改到影响快照的代码后,先人工确认 diff,再
-u刷新快照,保持 Agentic 单元测试与快照测试同步演进
【免费下载链接】agenticYour API ⇒ Paid MCP. Instantly.项目地址: https://gitcode.com/GitHub_Trending/ag/agentic
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考