rwadurian/backend/services/identity-service/TESTING_STRATEGY.md

4.2 KiB
Raw Blame History

测试策略说明

📊 测试类型对比

测试类型 需要的服务 运行环境 测试数量 运行命令
单元测试 无需外部服务 任何机器 46个 npm test
E2E测试 PostgreSQL + Redis ⚠️ 需要测试环境 20个 npm run test:e2e

单元测试(已完成且可运行)

特点

  • 完全独立不需要数据库、Redis、Kafka等任何外部服务
  • 运行速度快5-6秒完成所有测试
  • 覆盖核心逻辑:测试领域层的关键业务逻辑
  • 开发机器友好Windows/Mac/Linux均可运行

测试覆盖

  1. 助记词值对象 (12个测试)

    • 生成12个单词助记词
    • 转换为seed
    • 格式验证
    • 相等性比较
  2. 手机号值对象 (9个测试)

    • 中国手机号格式验证
    • 掩码显示 (138****8000)
    • 无效格式拒绝
  3. 钱包生成服务 (16个测试)

    • 生成多链钱包KAVA/DST/BSC
    • 助记词恢复
    • 地址格式验证
    • 加密解密
  4. 用户账户聚合根 (9个测试)

    • 账户创建
    • 设备管理
    • 业务规则验证

运行方式

# 运行所有单元测试
npm test

# 监听模式(开发时使用)
npm run test:watch

# 生成覆盖率报告
npm run test:cov

成功输出

PASS  src/domain/value-objects/phone-number.vo.spec.ts
PASS  src/domain/value-objects/mnemonic.vo.spec.ts
PASS  src/domain/aggregates/user-account/user-account.spec.ts
PASS  src/infrastructure/external/blockchain/wallet-generator.service.spec.ts

Test Suites: 4 passed, 4 total
Tests:       46 passed, 46 total
Time:        5.97 s

⚠️ E2E测试需要测试环境

为什么无法在开发机器运行?

E2E测试需要完整的运行环境

必需的服务

  • PostgreSQL - 存储用户数据、钱包信息
  • Redis - Token缓存、会话管理
  • Kafka - 已Mock不需要
  • SMS服务 - 已Mock不需要

Windows开发机器现状

  • 没有PostgreSQL
  • 没有Redis
  • 没有Docker

E2E测试覆盖的场景

如果有测试环境E2E测试会验证

  1. 用户注册和账户创建
  2. 用户资料管理(获取、更新)
  3. 设备管理添加、删除、限制5个
  4. Token刷新
  5. 推荐系统
  6. KYC认证
  7. 助记词恢复
  8. 数据验证

如何运行E2E测试

方案1在有数据库的服务器上运行

如果你的测试服务器或生产环境有PostgreSQL和Redis

# 1. 准备测试数据库
DATABASE_URL="postgresql://user:pass@localhost:5432/rwa_identity_test" npx prisma migrate dev

# 2. 确保Redis运行
redis-cli ping

# 3. 运行E2E测试
npm run test:e2e

方案2使用Docker如果安装了Docker

详见 E2E_TEST_SETUP.md

🎯 推荐的测试流程

开发阶段Windows机器

只运行单元测试

npm test

单元测试已经覆盖了核心业务逻辑:

  • 值对象验证
  • 领域服务逻辑
  • 聚合根业务规则
  • 加密解密算法

这对开发来说已经足够了!

集成测试阶段(测试环境)

在部署到测试环境后,运行完整测试套件:

npm test           # 单元测试
npm run test:e2e   # E2E测试

CI/CD流程

在持续集成环境中,建议:

# .github/workflows/test.yml
- name: Unit Tests
  run: npm test

- name: E2E Tests
  run: npm run test:e2e
  # 需要配置PostgreSQL和Redis服务

📝 总结

环境 运行的测试 覆盖率
开发机器 (Windows, 无数据库) 单元测试 ~60% 核心逻辑
测试环境 (有PostgreSQL+Redis) 单元+E2E ~85% 完整流程
CI/CD 单元+E2E ~85% 自动化验证

当前状态

单元测试46个测试全部通过 ⏸️ E2E测试20个测试需要测试环境才能运行

对于开发阶段,单元测试已经足够验证代码质量!

🔗 相关文档