news 2026/9/9 19:25:26

5 分钟跑通 Agentic 测试:从最小用例到快照防回归

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5 分钟跑通 Agentic 测试:从最小用例到快照防回归

5 分钟跑通 Agentic 测试:从最小用例到快照防回归

【免费下载链接】agenticYour API ⇒ Paid MCP. Instantly.项目地址: https://gitcode.com/GitHub_Trending/ag/agentic

Agentic 测试不需要测试理论基础:读完全文,你能独立在这个仓库跑通测试、写出第一个用例,并用快照拦住意外回归。

🏁 先跑起来:Agentic 测试环境的最小命令链

先确认 Node 版本不低于 20(package.jsonengines写死了>=20),然后敲这几条命令:

git clone https://gitcode.com/GitHub_Trending/ag/agentic cd agentic pnpm install pnpm test

项目用 pnpm 管理依赖(preinstall钩子用only-allow锁死了包管理器,npm/yarn 会被直接拦住),测试框架是Vitest。根目录pnpm test实际执行turbo test,以 32 路并发调度packages/stdlib/等所有子包。第一次跑会先触发pretest构建钩子,等终端出现各子包的全绿报告,环境就算跑通了。

📝 用例怎么写:单元测试的骨架与命名习惯

约定就三条:文件一律.test.ts后缀;跟源码同目录,utils.ts旁边就是utils.test.ts(见 stdlib/core/src/utils.test.ts,个别包如json-schematest/子目录);断言统一走 Vitest 的expect。骨架是describe圈套件、test写用例:

import { describe, expect, test } from 'vitest' import { zodToJsonSchema } from './zod-to-json-schema' describe('zodToJsonSchema', () => { test('handles basic objects', () => { expect(zodToJsonSchema(schema)).toEqual(expected) }) })

一个用例只验一件事,用例名里出现 "and" 就该拆开。函数简单时可以直接test不套describe,仓库里两种风格并存。常有人问 TypeScript 项目如何写单元测试,答案就藏在这套约定里:就近放置、命名即文档、断言单一,可对照 stdlib/core/src/zod-to-json-schema.test.ts 的完整写法。

📸 状态变了怎么办:快照测试防回归的正确姿势

快照测试什么时候用?一句话:输出结构稳定、但手工写断言太累。适用场景是 API 响应格式、复杂对象序列化这类"格式不该变"的东西;时间戳、随机 ID、环境相关路径就别拍了——每次运行都变,快照必然变红。

真实用例(utils.test.ts里的sanitizeSearchParams):

expect(sanitizeSearchParams({ a: [1, 2, 3] }).toString()).toMatchSnapshot() expect(sanitizeSearchParams({}).toString()).toMatchSnapshot()

首次运行会把输出写进__snapshots__目录,如 stdlib/core/src/snapshots/utils.test.ts.snap,内容是一行行exports[`sanitizeSearchParams 1`] = `"a=1&c=13"`。之后每次运行逐字比对,代码改动导致输出不一致,测试直接红。看到红灯先确认变更是否符合预期:该变就按 Vitest 的-u参数更新快照,不该变就去查代码,别无脑放行。

🛡️ 让 Agentic 测试不翻车:3 条实操建议

覆盖率和稳定性是两回事,下面三条最容易见效:

  1. 核心公共 API 全覆盖packages/typesstdlib/core这类对外导出的函数一个不能漏——它们是被下游依赖的契约,改动最伤。
  2. 边界与异常输入必测:空对象、空数组、undefinednull各喂一轮,pruneEmpty({ b: {}, c: [] })这种用例就是现成范本。
  3. 新功能先写用例再写实现TDD节奏让 API 形状先于代码定型,红-绿-重构循环会逼你把边界想清楚再动手。

⚠️ 常见误区速查:新手最容易踩的坑

翻车基本集中在这三处,每条都值得对号入座:

  • 把快照当万能断言:快照只拦"意外变更",不证明逻辑正确,关键分支仍要写显式expect
  • 测试里硬编码外部服务:直连真实 API 的用例会随对方服务漂移,本地 mock(仓库已有mockKyInstance这类工具)或走 e2e 夹具。
  • 快照红了无脑更新:不看 diff 就更新,等于把回归放行;反过来该更新却不敢更新,CI 长期红灯问题也解决不了。

现在就打开终端跑一遍pnpm test,然后挑一个你改过的函数,补上它的第一份.test.ts

【免费下载链接】agenticYour API ⇒ Paid MCP. Instantly.项目地址: https://gitcode.com/GitHub_Trending/ag/agentic

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 19:23:01

嵌入式Linux下librtmp交叉编译实战:从依赖到部署

简介:librtmp库作为rtmpdump工具的核心组件,长期用于RTMP协议处理与实时流媒体开发。该librtmp库实测可在Linux环境下完成交叉编译,面向需要在x86开发机上为ARM等嵌入式平台构建RTMP库的开发者,可帮助解决编译链配置与Makefile调整…

作者头像 李华
网站建设 2026/9/9 19:19:44

苏州Android工程师岗位深度拆解:从应用层到系统层面试准备

周六晚上刷到一条苏州虹保世纪科技的 Android 开发工程师岗位推送,JD 写得挺实诚,技术栈列得算清楚,待遇区间也标了范围。我把这家公司近两三年放出来的 Android 相关职位、面试反馈和内部工具链信息翻了个遍,也对照了苏州本地同类…

作者头像 李华
网站建设 2026/9/9 19:19:09

共享储能与多类型负荷需求响应的园区经济运行优化研究

做园区级能量管理项目的时候,我一直有一个很深的感受:很多园区把储能、负荷、光伏当成三个割裂的模块来调度,储能利用率低、负荷侧白白浪费了调节空间,最后算经济账非常难看。这个“含共享储能的园区多类型负荷需求响应经济运行研…

作者头像 李华
网站建设 2026/9/9 19:17:42

AI编码中spec与plan:从模糊需求到可验收交付的关键

写代码这行当干了十几年,最近半年我几乎天天泡在AI coding工具里,越用越觉得有个概念被大家混得厉害:spec和plan。不少人跟我抱怨,说让AI先做plan再写代码,结果写完还是一堆bug,甚至方向直接跑偏。我问他&a…

作者头像 李华
网站建设 2026/9/9 19:17:36

GPT Academic 如何用动态代码解释器批量处理图片、CSV 与文本文件?

GPT Academic 如何用动态代码解释器批量处理图片、CSV 与文本文件? 【免费下载链接】gpt_academic 为GPT/GLM等LLM大语言模型提供实用化交互接口,特别优化论文阅读/润色/写作体验,模块化设计,支持自定义快捷按钮&函数插件&…

作者头像 李华