54 lines
2.8 KiB
Markdown
54 lines
2.8 KiB
Markdown
## 1. 依赖安装
|
||
|
||
- [x] 1.1 安装 cheerio、xpath、@xmldom/xmldom 依赖
|
||
|
||
## 2. 类型定义
|
||
|
||
- [x] 2.1 在 types.ts 中定义 ExpectOperator、BodyExpectConfig 接口
|
||
- [x] 2.2 更新 ExpectConfig 接口,新增 headers 字段,将 bodyContains 替换为 body 分组
|
||
- [x] 2.3 新增 CssExpect 类型(ExpectValue | ExpectOperator & { attr?: string })
|
||
- [x] 2.4 导出 ExpectValue 联合类型
|
||
|
||
## 3. Body 校验核心实现
|
||
|
||
- [x] 3.1 实现简易 JSONPath 求值函数 evaluateJsonPath(支持 $.a.b、$.a[0].b 等基本路径)
|
||
- [x] 3.2 实现操作符比较函数 applyOperator(equals/contains/match/empty/exists/gte/lte/gt/lt)
|
||
- [x] 3.3 实现 checkExpectValue 函数:标量 → equals,对象 → 遍历操作符
|
||
- [x] 3.4 实现 checkBodyContains:body.includes 包装
|
||
- [x] 3.5 实现 checkBodyRegex:new RegExp().test 包装
|
||
- [x] 3.6 实现 checkBodyJson:JSON.parse + evaluateJsonPath + applyOperator
|
||
- [x] 3.7 实现 checkBodyCss:cheerio.load + 选择器查询 + text/attr 提取 + applyOperator
|
||
- [x] 3.8 实现 checkBodyXpath:xmldom 解析 + xpath 引擎 evaluate + applyOperator
|
||
|
||
## 4. Expect 校验重构
|
||
|
||
- [x] 4.1 重构 checkExpect 函数,新增 headers 检查逻辑
|
||
- [x] 4.2 将 bodyContains 检查替换为 checkBodyExpect 调用,按需分发到五种子方法
|
||
- [x] 4.3 实现 checkBodyExpect 主入口:按 contains → regex → json → css → xpath 顺序 AND 短路执行
|
||
|
||
## 5. 配置加载
|
||
|
||
- [x] 5.1 确认 config-loader 中 expect 透传逻辑对新结构的兼容性,更新类型引用
|
||
|
||
## 6. 数据存储兼容
|
||
|
||
- [x] 6.1 验证 store.ts 中 expect JSON 序列化对新结构的兼容性,必要时调整
|
||
|
||
## 7. 测试
|
||
|
||
- [x] 7.1 为 evaluateJsonPath 编写单元测试(嵌套对象、数组索引、不存在路径、边界情况)
|
||
- [x] 7.2 为 applyOperator 编写单元测试(9 种操作符各至少 2 个 case)
|
||
- [x] 7.3 为 checkBodyContains/checkBodyRegex 编写单元测试
|
||
- [x] 7.4 为 checkBodyJson 编写单元测试(等值匹配、操作符匹配、JSON 解析失败、路径不存在)
|
||
- [x] 7.5 为 checkBodyCss 编写单元测试(text 提取、attr 提取、无匹配元素)
|
||
- [x] 7.6 为 checkBodyXpath 编写单元测试(节点文本、属性值、无匹配节点、XML 解析失败)
|
||
- [x] 7.7 为 checkExpect 新增测试用例(headers 校验、body 多种方法 AND 组合、全量规则)
|
||
- [x] 7.8 更新 config-loader 测试用例(新 expect 格式解析、向后兼容验证)
|
||
- [x] 7.9 端到端模拟测试:构造完整 expect 配置并验证 checkExpect 整体行为
|
||
|
||
## 8. 文档与示例
|
||
|
||
- [x] 8.1 更新 probes.example.yaml,展示 headers 和 body 分组全部用法示例
|
||
- [x] 8.2 更新 README.md 配置说明章节,补充 expect.body 和 headers 的文档
|
||
- [x] 8.3 更新 README.md 依赖列表(如有需要)
|