013.003.story.md 10.0 KB

故事 013.003:史诗012新增路由连通性集成测试

状态

Ready for Review

故事

作为系统开发人员, 我希望在server包中创建史诗012新增路由的连通性集成测试, 以便验证这些路由在server包中注册的正确性和系统集成性,确保API端点可正常访问。

验收标准

从史诗文件复制的验收标准编号列表

  1. 新的集成测试文件创建成功,遵循项目测试标准
  2. 所有史诗012新增的路由连通性测试通过
  3. 测试仅验证路由注册和连通性,不重复各模块的功能测试
  4. 现有测试套件无回归,所有测试继续通过
  5. 代码符合项目编码和测试标准

任务 / 子任务

将故事分解为实施所需的具体任务和子任务。 在相关处引用适用的验收标准编号。

任务1:分析史诗012新增路由并规划测试范围(AC:1,2,3)

  • 分析server包src/index.ts中史诗012新增的路由注册:
    • enterpriseAuthApiRoutes (/api/v1/yongren/auth)
    • enterpriseCompanyApiRoutes (/api/v1/yongren/company)
    • enterpriseDisabilityApiRoutes (/api/v1/yongren/disability-person)
    • 订单模块中新增的企业相关路由(通过现有orderApiRoutes注册)
  • 确定需要测试的具体端点列表:
    • 企业用户认证:登录、登出、获取用户信息
    • 企业统计:概览统计、人才统计
    • 残疾人扩展:工作历史、薪资历史、征信信息、视频关联
    • 订单企业功能:打卡统计、视频统计、企业订单、企业视频、批量下载、视频状态更新
  • 规划测试策略:仅测试路由连通性,不测试具体业务逻辑

任务2:创建集成测试文件并实现基础结构(AC:1,5)

  • packages/server/tests/integration/目录创建epic012-routes-connectivity.integration.test.ts文件
  • 按照现有集成测试模式设置导入:
    • 导入describeitexpect from 'vitest'
    • 导入testClient from 'hono/testing'
    • 导入相关路由:enterpriseAuthApiRoutesenterpriseCompanyApiRoutesenterpriseDisabilityApiRoutesorderApiRoutes from '../../src/index'
  • 设置测试描述和分组结构,按照路由模块组织测试

任务3:实现企业用户认证路由连通性测试(AC:1,2,3)

  • 测试POST /api/v1/yongren/auth/login端点连通性
  • 测试POST /api/v1/yongren/auth/logout端点连通性
  • 测试GET /api/v1/yongren/auth/me端点连通性
  • 遵循现有模式:验证端点可访问(返回200或401状态码),不验证具体业务逻辑

任务4:实现企业统计路由连通性测试(AC:1,2,3)

  • 测试GET /api/v1/yongren/company/overview端点连通性
  • 测试GET /api/v1/yongren/company/{id}/talents端点连通性(使用测试ID)
  • 验证路径前缀/api/v1/yongren/company正确应用

任务5:实现残疾人扩展路由连通性测试(AC:1,2,3)

  • 测试GET /api/v1/yongren/disability-person/{id}/work-history端点连通性
  • 测试GET /api/v1/yongren/disability-person/{id}/salary-history端点连通性
  • 测试GET /api/v1/yongren/disability-person/{id}/credit-info端点连通性
  • 测试GET /api/v1/yongren/disability-person/{id}/videos端点连通性
  • 验证路径前缀/api/v1/yongren/disability-person正确应用

任务6:实现订单模块企业功能路由连通性测试(AC:1,2,3)

  • 测试GET /api/v1/order/checkin-statistics端点连通性
  • 测试GET /api/v1/order/video-statistics端点连通性
  • 测试GET /api/v1/order/company-orders端点连通性
  • 测试GET /api/v1/order/company-videos端点连通性
  • 测试POST /api/v1/order/batch-download端点连通性
  • 测试PUT /api/v1/order/videos/{id}/status端点连通性
  • 验证这些端点通过现有orderApiRoutes正确注册

任务7:运行和验证测试结果(AC:1,2,4)

  • 运行新创建的集成测试:cd packages/server && pnpm test --testNamePattern "史诗012"
  • 确保所有测试通过,验证路由连通性
  • 运行完整测试套件,确保无回归:cd packages/server && pnpm test
  • 如有测试失败,分析原因并修复(可能是路由注册问题或测试实现问题)

任务8:代码审查和文档更新(AC:5)

  • 确保测试代码符合项目编码标准
  • 验证测试文件命名和位置符合项目约定
  • 如有必要,更新相关文档或添加测试说明

技术笔记

现有系统集成

  • 集成模块:server包 (@d8d/server) 及其路由注册
  • 技术栈:TypeScript 5.8.3、Hono 4.8.5、Vitest 3.2.4、Testing Library
  • 遵循模式
    • 现有集成测试模式(参考allin-modules.integration.test.ts
    • Hono RPC客户端测试模式
    • 仅测试连通性,不测试业务逻辑
  • 接触点
    • packages/server/src/index.ts:路由注册入口
    • packages/server/tests/integration/:集成测试目录
    • 史诗012新增的路由模块:企业认证、企业统计、残疾人扩展、订单企业功能

关键约束

  1. 测试范围限制:仅测试路由注册和连通性,不重复各模块已有的功能测试
  2. 认证中间件:许多端点需要认证,测试应接受401(未认证)作为有效响应
  3. 路径前缀验证:确保/api/v1/yongren前缀正确应用于史诗012新增路由
  4. 向后兼容:测试不应影响现有功能,现有测试必须继续通过
  5. 性能影响:新增测试不应显著增加测试执行时间

集成方法

  1. 路由连通性测试:使用testClient调用端点,验证响应状态码(200或401)
  2. 路径前缀验证:通过实际调用验证完整路径正确性
  3. 模块化测试组织:按路由模块分组测试,便于维护和定位问题
  4. 最小化断言:仅验证端点可访问,不验证响应数据细节
  5. 错误处理测试:接受401状态码作为认证中间件正常工作的证据

开发笔记

仅填充从docs文件夹中的实际工件提取的相关信息,与此故事相关:

先前故事洞察

史诗013中已有故事013.001和013.002完成类型错误修复。本故事关注测试覆盖而非类型修复。

已知路由详情

基于史诗012实现和server包路由注册分析:

  1. 企业用户认证路由 (enterpriseAuthApiRoutes):

    • 注册路径:/api/v1/yongren/auth
    • 包含端点:POST /loginPOST /logoutGET /me
    • 中间件:enterpriseAuthMiddleware(企业用户认证)
  2. 企业统计路由 (enterpriseCompanyApiRoutes):

    • 注册路径:/api/v1/yongren/company
    • 包含端点:GET /overviewGET /{id}/talents
    • 中间件:enterpriseAuthMiddleware
  3. 残疾人扩展路由 (enterpriseDisabilityApiRoutes):

    • 注册路径:/api/v1/yongren/disability-person
    • 包含端点:GET /{id}/work-historyGET /{id}/salary-historyGET /{id}/credit-infoGET /{id}/videos
    • 中间件:enterpriseAuthMiddleware
  4. 订单模块企业功能

    • 通过现有orderApiRoutes注册,路径:/api/v1/order
    • 新增企业相关端点:/checkin-statistics/video-statistics/company-orders/company-videos/batch-download/videos/{id}/status
    • 中间件:enterpriseAuthMiddleware

测试策略

  1. 连通性验证:使用testClient调用端点,验证返回200(已认证)或401(未认证)
  2. 路径正确性:通过实际调用验证完整URL路径
  3. 中间件集成:401响应表明认证中间件正常工作
  4. 错误场景:不提供认证令牌应返回401,证明路由和中间件正确集成

风险缓解

  • 主要风险:测试可能过于严格,因认证要求而失败
  • 缓解措施:接受401作为有效响应,仅验证路由注册和中间件集成
  • 次要风险:测试可能影响现有测试执行时间
  • 缓解措施:测试数量合理,避免过度测试

兼容性验证

  • 无破坏性API更改(仅添加测试)
  • 无数据库schema更改(仅测试代码)
  • 无UI更改(仅后端测试)
  • 性能影响可忽略(仅增加少量测试)

相关技术文档

  • 史诗012文档:docs/prd/epic-012-api-supplement-for-employer-mini-program.md
  • 史诗013文档:docs/prd/epic-013-type-error-fixes.md
  • 项目架构:docs/architecture/
  • 编码标准:docs/architecture/coding-standards.md
  • 测试策略:docs/architecture/coding-standards.md#测试框架

验证检查清单

范围验证

  • 故事可以在一个开发会话中完成(聚焦测试创建)
  • 集成方法直接(遵循现有测试模式)
  • 遵循现有模式(集成测试模式)
  • 无需设计或架构工作(纯测试实现)

清晰度检查

  • 故事需求明确(创建连通性集成测试)
  • 集成点明确指定(史诗012新增路由)
  • 成功标准可测试(测试通过、无回归)
  • 回滚方法简单(删除测试文件)

文件列表

新建的文件

  1. packages/server/tests/integration/epic012-routes-connectivity.integration.test.ts - 史诗012新增路由连通性集成测试

测试执行验证

  • 新的集成测试文件创建成功并可通过测试
  • 所有史诗012新增路由连通性验证通过
  • 现有测试套件无回归,所有测试继续通过

Dev Agent Record

Agent Model Used

  • Claude Sonnet (claude-sonnet)

Debug Log References

Completion Notes List

  1. 创建了史诗012新增路由的连通性集成测试文件
  2. 实现了15个测试用例,覆盖所有企业用户认证、企业统计、残疾人扩展和订单模块企业功能路由
  3. 所有测试通过,验证了路由注册和连通性
  4. 现有测试套件无回归

File List

  • packages/server/tests/integration/epic012-routes-connectivity.integration.test.ts

Change Log

  • 2025-12-17: 创建集成测试文件并实现所有连通性测试

Status

Ready for Review