4.2 KiB
4.2 KiB
测试策略说明
📊 测试类型对比
| 测试类型 | 需要的服务 | 运行环境 | 测试数量 | 运行命令 |
|---|---|---|---|---|
| 单元测试 | ❌ 无需外部服务 | ✅ 任何机器 | 46个 | npm test |
| E2E测试 | ✅ PostgreSQL + Redis | ⚠️ 需要测试环境 | 20个 | npm run test:e2e |
✅ 单元测试(已完成且可运行)
特点
- 完全独立:不需要数据库、Redis、Kafka等任何外部服务
- 运行速度快:5-6秒完成所有测试
- 覆盖核心逻辑:测试领域层的关键业务逻辑
- 开发机器友好:Windows/Mac/Linux均可运行
测试覆盖
-
✅ 助记词值对象 (12个测试)
- 生成12个单词助记词
- 转换为seed
- 格式验证
- 相等性比较
-
✅ 手机号值对象 (9个测试)
- 中国手机号格式验证
- 掩码显示 (138****8000)
- 无效格式拒绝
-
✅ 钱包生成服务 (16个测试)
- 生成多链钱包(KAVA/DST/BSC)
- 助记词恢复
- 地址格式验证
- 加密解密
-
✅ 用户账户聚合根 (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测试会验证:
- 用户注册和账户创建
- 用户资料管理(获取、更新)
- 设备管理(添加、删除、限制5个)
- Token刷新
- 推荐系统
- KYC认证
- 助记词恢复
- 数据验证
如何运行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)
🎯 推荐的测试流程
开发阶段(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个测试(需要测试环境才能运行)
对于开发阶段,单元测试已经足够验证代码质量!
🔗 相关文档
- AUTOMATED_TESTS_README.md - 快速开始指南
- TEST_AUTOMATION_GUIDE.md - 详细测试指南
- E2E_TEST_SETUP.md - E2E测试环境配置