# 测试规范 (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 运行所有测试 ```bash 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