Files
Web_BLS_OldRcu_Heartbeat_Se…/bls-oldrcu-heartbeat-backend/spec/testing.md
XuJiacheng e45d14b720 feat: 实现心跳消息处理模块
- 新增 HeartbeatBuffer 类,用于收集和去重 Kafka 心跳消息,并定期将数据刷新到数据库。
- 新增 HeartbeatDbManager 类,负责与 PostgreSQL 数据库的交互,支持批量 upsert 操作。
- 新增配置文件 config.js,支持从环境变量加载配置。
- 新增 Kafka 消费者模块,支持从 Kafka 中消费心跳消息。
- 新增 Redis 集成模块,支持将日志和心跳信息推送到 Redis。
- 新增心跳消息解析器,负责解析 Kafka 消息并提取心跳字段。
- 新增日志记录工具,支持不同级别的日志输出。
- 新增指标收集器,跟踪 Kafka 消息处理和数据库操作的指标。
- 新增单元测试,覆盖 HeartbeatBuffer 和 HeartbeatDbManager 的主要功能。
- 新增数据库表结构 SQL 文件,定义 room_status_moment_g5 表的结构。
- 配置 Vite 构建工具,支持 Node.js 环境的构建。
2026-03-12 14:11:02 +08:00

1.9 KiB

测试规范 (Testing Specification)

1. 测试框架与工具

1.1 技术栈

工具 版本 用途
Vitest 4.0.18 单元测试框架
Node.js 18+(推荐) 运行时环境
npm 9+ 包管理

2. 单元测试

2.1 Parser 测试 (heartbeat_parser.test.js)

覆盖对象: src/processor/heartbeatParser.js

测试覆盖矩阵:

测试编号 测试项 输入 期望结果 状态
T1 有效消息 4 个正确字段 parsed object ✓ 通过
T2 无效 JSON 格式错误 null ✓ 通过
T3 缺失字段 无 ts_ms null ✓ 通过
T4 类型错误 ts_ms 为字符串 null ✓ 通过
T5 空值 hotel_id="" null ✓ 通过
T6 空值 hotel_id=" " null ✓ 通过
T7 格式错误 non-digit hotel_id null ✓ 通过
T8 多字节字符 中文 room_id parsed object ✓ 通过

2.2 Buffer 测试 (heartbeat_buffer.test.js)

覆盖对象: src/buffer/heartbeatBuffer.js

测试覆盖矩阵:

测试编号 测试项 场景 期望结果 状态
B1 重复去重 同键 3 条消息 保留 ts_ms=1100 ✓ 通过
B2 分离条目 不同键 缓冲大小=2 ✓ 通过
B3 无效拒绝 null 输入 缓冲size=0 ✓ 通过
B4 失败恢复 DB 异常 记录重入队 ✓ 通过
B5 冷却期 30s 内重写 写入被跳过 ✓ 通过
B6 冷却期保留 30s 内多次更新 最新值被保留 ✓ 通过

3. 测试执行

3.1 运行所有测试

npm run test

输出示例:

✓ tests/heartbeat_parser.test.js (8)
✓ tests/heartbeat_buffer.test.js (6)

Test Files  2 passed (2)
Tests      14 passed (14)

Duration   234ms

上次修订: 2026-03-11