001.006.story.md 3.7 KB

Story 001.006: 文件管理测试覆盖

Status

Ready for Development

Story

As a 开发人员 I want 完整的文件管理功能测试覆盖 so that 确保文件上传、下载、管理功能的稳定性和可靠性

Acceptance Criteria

  • [ ] 文件服务层单元测试覆盖 (目标 > 70%)

    • FileService核心方法测试(createFile, deleteFile, getFileUrl, getFileDownloadUrl)
    • MinioService集成测试(generateUploadPolicy, getPresignedFileUrl, deleteObject)
    • 文件操作异常场景测试
  • [ ] 文件API端点集成测试覆盖 (目标 > 90%)

    • 文件上传策略API测试(POST /api/v1/files)
    • 文件下载URL生成测试(GET /api/v1/files/{id}/download)
    • 文件访问URL生成测试(GET /api/v1/files/{id}/url)
    • 文件删除操作测试(DELETE /api/v1/files/{id})
    • 文件列表和搜索功能测试
  • [ ] MinIO存储服务集成测试

    • 文件存储验证测试
    • 预签名URL生成验证
    • 多部分上传功能测试
  • [ ] Admin文件管理界面测试

    • 文件上传/下载功能集成测试
    • 文件列表和搜索功能E2E测试
    • 文件操作(重命名、删除)工作流测试
  • [ ] 测试覆盖率报告和监控集成

  • [ ] 所有测试通过且无回归

  • [ ] 遵循现有测试模式和代码规范

Tasks / Subtasks

  • 创建FileService单元测试文件
  • 创建MinioService单元测试文件
  • 创建文件API端点集成测试
  • 创建MinIO存储服务集成测试
  • 创建Admin文件管理界面集成测试
  • 配置测试环境和mock数据
  • 验证测试覆盖率达标
  • 集成到CI/CD流水线

Dev Notes

技术栈 [基于现有架构]

  • 测试框架: Vitest + Testing Library
  • API测试: Hono Testing Utilities
  • 数据库: PostgreSQL + TypeORM
  • 文件存储: MinIO
  • 前端测试: React Testing Library + Playwright

现有代码分析

  • FileService: 当前覆盖率12.32%,需要重点测试核心方法
  • MinioService: 当前覆盖率14.28%,需要集成测试
  • 文件API: 当前覆盖率82%,需要完善异常测试
  • Admin界面: 已有Files.tsx组件,需要集成测试

测试策略 [Source: architecture/testing-strategy.md]

  • 单元测试位于 src/**/__tests__/ 目录
  • 集成测试位于 src/**/__integration_tests__/ 目录
  • E2E测试使用Playwright
  • 遵循现有测试模式和结构

测试环境要求

  • 需要MinIO测试实例或mock
  • 需要数据库测试数据
  • 需要认证上下文mock

文件结构

项目根目录/
  src/server/
    modules/files/
      __tests__/
        file.service.test.ts          # FileService单元测试
        minio.service.test.ts         # MinioService单元测试
    api/files/
      __tests__/
        files.integration.test.ts     # 文件API集成测试
    __integration_tests__/
      minio.integration.test.ts       # MinIO集成测试
  tests/e2e/
    specs/admin/
      files.spec.ts                   # Admin文件管理E2E测试

Testing

测试场景

  • 正常文件上传下载流程
  • 大文件上传测试
  • 文件权限验证
  • 异常场景测试(文件不存在、权限不足等)
  • 性能基准测试

覆盖率目标

  • 文件服务层: > 70%
  • 文件API端点: > 90%
  • 整体测试覆盖率提升到达标水平

Change Log

Date Version Description Author
2025-09-20 v1.0 初始故事创建 Sarah

Risk Assessment

高风险:

  • MinIO集成测试可能依赖外部服务
  • 文件操作涉及异步流程,测试复杂度较高

缓解策略:

  • 使用mock和stub减少外部依赖
  • 分阶段实施,先单元测试后集成测试
  • 充分的错误处理和回滚机制