Story 005.004: 评估和迁移集成测试
Status
Ready for Review
Story
As a 开发人员,
I want 评估和迁移适合的集成测试到packages/server目录,
so that packages/server成为一个真正独立的、可测试的库包,集成测试与源代码在同一包内管理
Acceptance Criteria
- 分析集成测试对web环境的依赖
- 迁移适合的集成测试到packages/server
- 更新测试工具类的共享使用
- 验证集成测试正常运行
Tasks / Subtasks
Dev Notes
技术栈信息 [Source: architecture/tech-stack.md]
- 测试框架: Vitest 3.2.4
- 运行时: Node.js 20.18.3
- 模块系统: ES 模块
- 数据库: PostgreSQL 17 + TypeORM
- API框架: Hono 4.8.5
- 测试工具: hono/testing (内置)
项目结构信息 [Source: architecture/source-tree.md]
- 当前集成测试位置: web/tests/integration/server/
- auth.integration.test.ts - 认证API集成测试
- users.integration.test.ts - 用户API集成测试
- files.integration.test.ts - 文件API集成测试
- minio.integration.test.ts - MinIO服务集成测试
- backup.integration.test.ts - 备份工具集成测试
- 目标集成测试位置: packages/server/tests/integration/
- 测试工具类位置:
- web/tests/utils/server/integration-test-db.ts
- web/tests/utils/server/integration-test-utils.ts
- packages/server/tests/utils/integration-test-db.ts (已存在)
- packages/server/tests/utils/integration-test-utils.ts (已存在)
测试策略信息 [Source: architecture/testing-strategy.md]
- 集成测试位置: tests/integration/*/.test.{ts,tsx}
- 集成测试框架: Vitest + Testing Library + hono/testing
- 集成测试覆盖率目标: ≥ 60%
- 测试执行频率: 每次API变更
- 测试数据管理: 使用专用测试数据库,事务回滚
先前故事洞察 [Source: docs/stories/005.003.story.md]
- 工具类测试迁移成功,所有24个测试通过
- 测试工具类已成功迁移到packages/server/tests/utils/
- 导入路径需要更新为@/utils/路径
- 保持测试功能对等,迁移前后测试覆盖相同功能
集成测试依赖分析
- auth.integration.test.ts: 依赖hono/testing, @d8d/server包,可能依赖web环境配置
- users.integration.test.ts: 依赖hono/testing, @d8d/server包,用户管理API测试
- files.integration.test.ts: 依赖hono/testing, @d8d/server包,文件上传API测试
- minio.integration.test.ts: 依赖hono/testing, @d8d/server包,MinIO服务测试
- backup.integration.test.ts: 依赖hono/testing, @d8d/server包,备份工具测试
迁移注意事项
- 检查每个集成测试是否依赖web特定环境(如SSR、前端路由等)
- 如果测试依赖web环境,可能需要重构或保留在web目录
- 更新导入路径为@d8d/server包内路径
- 确保mock和依赖注入正确配置
- 验证测试在packages/server环境中正常运行
Testing
- 测试文件位置: packages/server/tests/integration/
- 测试框架: Vitest + hono/testing
- 测试模式: 集成测试,使用真实数据库连接
- 覆盖率要求: 集成测试覆盖率 ≥ 60%
- 测试标准:
- 使用真实数据库连接进行集成测试
- 遵循Arrange-Act-Assert模式
- 包含API端点和业务逻辑集成测试
- 测试文件命名: [module].integration.test.ts
Change Log
| Date |
Version |
Description |
Author |
| 2025-11-09 |
1.0 |
初始故事创建 |
Bob (Scrum Master) |
Dev Agent Record
Agent Model Used
- Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
Debug Log References
- 修复JWTUtil.generateToken方法以支持expiresIn参数
- 修复AuthService.generateToken方法以正确传递expiresIn参数
Completion Notes List
- ✅ 成功分析所有集成测试的web环境依赖
- ✅ 发现所有测试都可以迁移到packages/server(无web特定依赖)
- ✅ 成功迁移auth.integration.test.ts到packages/server
- ✅ 成功迁移users.integration.test.ts到packages/server
- ✅ 成功迁移backup.integration.test.ts到packages/server
- ✅ 成功迁移files.integration.test.ts到packages/server
- ✅ 成功迁移minio.integration.test.ts到packages/server
- ✅ 修复JWT令牌过期测试失败问题
- ✅ 所有集成测试通过验证
File List
- 新增文件:
- packages/server/tests/integration/auth.integration.test.ts
- packages/server/tests/integration/users.integration.test.ts
- packages/server/tests/integration/backup.integration.test.ts
- packages/server/tests/integration/files.integration.test.ts
- packages/server/tests/integration/minio.integration.test.ts
- 修改文件:
- packages/server/src/utils/jwt.util.ts (修复expiresIn参数支持)
- packages/server/src/modules/auth/auth.service.ts (修复expiresIn参数传递)
QA Results