必须为AionClaw Skill编写完整测试用例:覆盖五类触发条件、边界与错误输入,验证input/output schema兼容性;新增.test.ts文件并mock执行模块;DOM相关Skill需补充.dom.test.tsx;最终通过pnpm test:unit验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

为AionClaw Skill准备测试案例,必须在提交前覆盖所有触发条件、边界输入与真实执行路径,否则无法通过仓库的CI校验和人工Review。每个新增或修改的Skill都需同步提供可运行的测试用例,否则PR将被自动拒绝。
确认测试触发条件是否全部覆盖
打开当前Skill目录下的 SKILL.md,逐条核对Testing Skill定义的五类触发条件是否已在测试用例中体现:新增功能、逻辑变更、任务完成声明、提交前回归、新测试编写。漏掉任意一类,测试即视为不完整。
重点检查「修改已有测试覆盖的逻辑」这一项——若你调整了SKILL.md中的YAML元数据、输入参数结构或输出格式约束,必须在测试中显式验证旧输入能否兼容、新字段是否被正确解析。否则运行时会因schema mismatch导致Agent调用失败。
编写 .test.ts 文件(Node环境)
在Skill根目录下新建 test-case-generator.test.ts(文件名须与Skill名一致 + .test.ts 后缀)。
导入 vitest 基础断言与 mock 工具:import { describe, it, expect, vi } from 'vitest'。
使用 vi.mock('../src/execute') 模拟实际执行模块,避免真实调用浏览器或文件系统——这一步不做,测试会因权限缺失或网络超时直接中断。
编写至少3组用例:① 正常输入(含中文描述+明确业务动词);② 边界输入(空字符串、超长文本、含emoji符号);③ 错误输入(缺失required字段、类型错配如number传入string)。每组需断言返回结构是否符合SKILL.md中定义的output schema。
补充 .dom.test.tsx 文件(jsdom环境)
方法一:当Skill涉及DOM操作(如网页表单填写、截图生成、PDF导出),必须添加 test-case-generator.dom.test.tsx。
方法二:若Skill仅做纯文本处理、本地JSON转换、API参数组装等无DOM依赖逻辑,则此文件可跳过。但需在SKILL.md的YAML frontmatter中显式声明 requiresDom: false,否则CI默认要求该文件存在。
注意:.dom.test.tsx 中不可使用 document.querySelector 直接查真实页面元素——jsdom环境无真实渲染,必须用 render() + screen.getByText 等React Testing Library API模拟交互路径。
注入真实执行路径验证
第一步:在测试中构造一个最小可行输入对象,字段严格对齐SKILL.md中inputSchema定义。
第二步:调用Skill暴露的execute()函数(路径通常为../src/execute.ts),传入该输入对象。
第三步:捕获返回值,断言其type字段等于"success",且data中包含非空数组testCases,每个case含id、description、steps三个必有字段。
第四步:手动运行pnpm test:unit,确认该测试文件被识别并100%通过。若报Cannot find module,说明路径别名未配置或tsconfig.json未包含test目录。

















