- 新增 HeartbeatBuffer 类,用于收集和去重 Kafka 心跳消息,并定期将数据刷新到数据库。 - 新增 HeartbeatDbManager 类,负责与 PostgreSQL 数据库的交互,支持批量 upsert 操作。 - 新增配置文件 config.js,支持从环境变量加载配置。 - 新增 Kafka 消费者模块,支持从 Kafka 中消费心跳消息。 - 新增 Redis 集成模块,支持将日志和心跳信息推送到 Redis。 - 新增心跳消息解析器,负责解析 Kafka 消息并提取心跳字段。 - 新增日志记录工具,支持不同级别的日志输出。 - 新增指标收集器,跟踪 Kafka 消息处理和数据库操作的指标。 - 新增单元测试,覆盖 HeartbeatBuffer 和 HeartbeatDbManager 的主要功能。 - 新增数据库表结构 SQL 文件,定义 room_status_moment_g5 表的结构。 - 配置 Vite 构建工具,支持 Node.js 环境的构建。
1.9 KiB
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