Story 001.001: 基础单元测试框架搭建
Status
Ready for Review
Story
As a 全栈开发者
I want 建立完整的单元测试基础设施和模式
so that 我可以为现有代码库编写高质量的单元测试,确保代码质量和可维护性
Acceptance Criteria
- 为核心模块创建单元测试模板和模式
- 建立测试工具函数和mock数据
- 配置测试覆盖率阈值和报告
- 创建开发人员测试指南文档
Tasks / Subtasks
Dev Notes
现有技术栈分析
- 测试框架: Vitest 3.2.4 [Source: package.json]
- 测试环境: Node.js环境 + happy-dom(前端测试)[Source: vitest.config.ts]
- 覆盖率工具: @vitest/coverage-v8 [Source: vitest.config.ts]
- 现有配置: Vitest配置完整,包含模块映射、覆盖率阈值、测试环境设置 [Source: vitest.config.ts]
核心模块测试需求
UserService测试重点:
- 用户CRUD操作验证
- 密码加密和验证逻辑
- 角色权限关联测试
- 错误处理和边界条件
AuthService测试重点:
- JWT令牌生成和验证
- 登录认证流程
- 会话管理测试
- 安全漏洞防护
GenericCRUDService测试重点:
- 通用CRUD操作测试
- 关联查询验证
- 分页和过滤功能
- 自定义扩展点测试
测试文件结构
基于现有项目结构 [Source: architecture.md#源码树和文件组织]:
src/
├── server/
│ ├── modules/
│ │ ├── users/
│ │ │ ├── __tests__/ # 单元测试目录
│ │ │ │ ├── user.service.test.ts
│ │ │ │ └── role.service.test.ts
│ │ ├── auth/
│ │ │ ├── __tests__/
│ │ │ │ └── auth.service.test.ts
│ ├── utils/
│ │ ├── __tests__/
│ │ │ ├── generic-crud.service.test.ts
│ │ │ └── errorHandler.test.ts
测试标准和模式
命名约定:
- 测试文件:
*.test.ts 或 *.spec.ts
- 测试套件:
describe('模块名称', () => {})
- 测试用例:
it('应该描述预期行为', () => {})
测试结构模式:
describe('ServiceName', () => {
describe('methodName', () => {
it('should do something when condition', () => {
// Arrange
// Act
// Assert
});
it('should handle error case', () => {
// Error scenario test
});
});
});
技术约束和要求
- 兼容性: 必须保持现有API接口不变 [Source: epic-001-test-infrastructure.md]
- 性能: 测试执行时间应合理,不影响开发流程
- 覆盖率: 核心业务逻辑测试覆盖率 > 70% [Source: architecture.md]
- 质量: 测试代码遵循相同代码质量标准
集成点
- 构建流程: 集成到现有
npm test命令
- CI/CD: 与GitHub Actions或其他CI工具集成
- 开发体验: 支持watch模式和调试
Testing
测试策略
- 单元测试范围: 单个函数、方法、类的独立测试
- Mock策略: 使用Vitest mock功能隔离外部依赖
- 数据准备: 使用工厂函数创建测试数据
- 断言库: Vitest内置断言 + 自定义匹配器
测试覆盖目标
- 行覆盖率: > 70%
- 分支覆盖率: > 70%
- 函数覆盖率: > 70%
- 语句覆盖率: > 70%
测试环境
- Node.js环境: 后端服务和工具函数测试
- jsdom环境: 前端组件测试(需要时)
- 数据库: 使用内存数据库或mock进行数据层测试
Change Log
| Date |
Version |
Description |
Author |
| 2025-09-15 |
1.0 |
初始故事创建 |
Bob (Scrum Master) |
Dev Agent Record
Agent Model Used
Debug Log References
Completion Notes List
File List
QA Results
Review Date: 2025-09-17
Reviewed By: Quinn (Test Architect)
Code Quality Assessment
测试框架基础设施完整,核心模块测试模板设计良好。修复了测试配置冲突问题,确保前端组件测试在正确的环境中运行。测试覆盖率达到预期标准。
Configuration Fixes Performed
File: vitest.config.ts
- Change: 排除E2E测试目录,防止Playwright测试被Vitest错误执行
- Why: 解决测试环境冲突问题,确保各类型测试独立运行
- How: 添加
tests/e2e/** 到排除模式
File: package.json
- Change: 修复默认test脚本配置
- Why: 确保前端和后端测试使用正确的环境配置
- How: 将
"test": "vitest" 改为组合脚本
Compliance Check
- Coding Standards: ✓ 符合项目代码规范
- Project Structure: ✓ 测试文件组织结构合理
- Testing Strategy: ✓ 单元测试覆盖率达标
- All ACs Met: ✓ 所有验收标准均已实现
Improvements Checklist
Security Review
密码哈希使用bcrypt正确实现,验证逻辑安全。无重大安全漏洞发现。
Performance Considerations
测试执行时间合理,mock策略适当,不会影响开发流程性能。
Files Modified During Review
- vitest.config.ts
- package.json
Gate Status
Gate: PASS → docs/qa/gates/001.001-basic-unit-test-framework.yml
Recommended Status
✓ Ready for Done - 测试框架基础设施完整,配置问题已修复,质量达标