← ClaudeAtlas

write-testslisted

根据 TDD 技术设计文档生成测试用例代码,在功能实现前建立测试骨架。 覆盖单元测试、API 接口测试和 E2E 测试三个层次,输出可立即运行(初始为红)的测试文件, 为 dev 阶段提供明确的实现目标。是 scaffold-project 的下游、dev 的上游。 当用户说"写测试用例"、"生成测试"、"根据 TDD 写测试"、"先写测试"、"测试驱动开发"、 "TDD 红阶段"、"write test cases"、"generate tests"、"tests from TDD", 或者想在开发前先建立测试框架时,务必使用此 skill。
hacxy/skills · ★ 0 · Testing & QA · score 70
Install: claude install-skill hacxy/skills
## 定位 ``` write-prd → write-tdd → scaffold-project → [write-tests] → dev → code-review → test → deploy ``` write-tests 的职责是把 TDD 中的接口设计和模块划分转化为测试代码,形成「红-绿-重构」 循环的**红阶段**——测试先行,dev 阶段让它们变绿。 ## 第一步:获取上下文 按优先级读取: 1. `docs/tdd-*.md` — 提取:API 接口列表、数据库表、模块划分 2. `docs/prd-*.md` — 提取:MVP 功能范围和用户故事(用于 E2E 场景) 3. 用户对话描述(若以上文档均不存在) **回退策略:** - 无 TDD → 向用户询问需要测试的接口和功能 - 无 PRD → E2E 场景由用户描述或跳过 ## 第二步:生成测试用例 按三个层次逐一生成测试文件。生成顺序:**单元测试 → API 测试 → E2E 测试**。 每生成一层立即写入文件,不等全部生成完再写。 **生成完所有测试文件后,必须执行依赖声明检查:** ```bash # 检查测试文件中所有 import 的包是否在 package.json 中声明 grep -rh "^import" tests/ | grep "from '" | grep -oP "from '[^']+'" | sort -u cat package.json | jq '.dependencies // {} | keys' ``` API 测试必须使用 `@elysiajs/eden`,若 `package.json` 中无此包,立即安装: ```bash bun add @elysiajs/eden ``` **不允许留到运行时才发现缺包。** --- ### 层一:单元测试 **目标**:覆盖工具函数、数据校验逻辑、Model 层核心方法。 文件放 `tests/unit/`,命名:`[模块名].test.ts`。 从 TDD 模块划分中识别可单元测试的部分: - `models/` 中的数据操作方法 - `middlewares/` 中的校验逻辑 - 工具函数和纯函数 每个测试文件结构: ```ts import { describe, it, expect, beforeEach } from 'bun:test' describe('[模块名]', () => { // 正常路径 it('should [预期行为] when [条件]', () => { // arrange // act // assert expect(actual).toBe(expected) }) // 边界/异常路径 it('should throw when [异常条件]', () => { expect(() => fn(invalidInput)).toThrow() }) }) ``` --- ### 层二:API 接口测试 **目标**:覆盖 TDD 中定义的每条接口,每条接口至少三个用例:正常 + 参数缺失 + 越权(如有鉴权)。 文件放 `tests/api/`,命名:`[resource].test.ts`。 从 TDD API 列表逐一生成,使用 Elysia Eden treaty。 **路径适配:** 先确认项目结构再