# Story 005.004: 评估和迁移集成测试 ## Status Ready for Review ## Story **As a** 开发人员, **I want** 评估和迁移适合的集成测试到packages/server目录, **so that** packages/server成为一个真正独立的、可测试的库包,集成测试与源代码在同一包内管理 ## Acceptance Criteria 1. 分析集成测试对web环境的依赖 2. 迁移适合的集成测试到packages/server 3. 更新测试工具类的共享使用 4. 验证集成测试正常运行 ## Tasks / Subtasks - [x] 分析web/tests/integration/server中的集成测试依赖 (AC: 1) - [x] 检查auth.integration.test.ts的web环境依赖 - [x] 检查users.integration.test.ts的web环境依赖 - [x] 检查files.integration.test.ts的web环境依赖 (文件位于web/tests/integration/server/files/) - [x] 检查minio.integration.test.ts的web环境依赖 (文件位于web/tests/integration/server/files/) - [x] 检查backup.integration.test.ts的web环境依赖 - [x] 迁移适合的集成测试到packages/server/tests/integration (AC: 2) - [x] 创建packages/server/tests/integration目录结构 - [x] 迁移auth.integration.test.ts(如果依赖可解决) - [x] 迁移users.integration.test.ts(如果依赖可解决) - [x] 迁移files.integration.test.ts(如果依赖可解决) - [x] 迁移minio.integration.test.ts(如果依赖可解决) - [x] 迁移backup.integration.test.ts(如果依赖可解决) - [x] 更新测试工具类的共享使用 (AC: 3) - [x] 检查packages/server/tests/utils中现有的测试工具 - [x] 更新集成测试以使用packages/server中的测试工具 - [x] 确保测试工具类路径正确 - [x] 验证集成测试正常运行 (AC: 4) - [x] 运行所有迁移后的集成测试 - [x] 检查测试覆盖率 - [x] 确保没有测试失败 ## 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