SuperAPI AI 工具集

pdk-unit

编程与开发

查看项目

更新于 10-16 01:31

技能介绍

用途:指导开发者为用 PDK 构建的 Omni Gateway 自定义策略编写并运行进程内单元测试,从“有策略但无测试”推进到 make test 通过。

主要能力:区分单元测试与集成测试;手动建立 src/tests/ 目录并在 src/lib.rs 添加 #[cfg(test)] mod tests;;用 UnitTestBuilder 编写首个测试,配置后端与默认返回 200 OK 的上游;通过 TestConfig::base() 集中管理配置;用 with_http_upstream_from_authority 模拟上游,authority 需与运行时一致;用 TraceBackend 捕获策略实际发送的请求;断言状态码、响应头与 violation。

必要用法:常用命令为 cargo test --lib(仅单元测试,快速)、cargo test --lib <name> -- --nocapture、make test(WASM 构建加全部测试)、cargo test(全部测试)。配置需满足 definition/gcl.yaml 的必填字段,否则配置解析失败返回 503。INIT_SLEEP 建议固定为 Duration::from_millis(10),并在 with_entrypoint 后调用 tester.sleep(INIT_SLEEP),避免首个请求与过滤器初始化竞争。

适用场景:头部操作、正文转换、带模拟 introspection 的 JWT/OAuth 流程、限流决策、校验拒绝等大部分策略逻辑。

限制:无法真实覆盖 TLS 终止、监听器接线、mTLS、真实连接器链、策略 WASM 与 Omni 运行时版本偏差,这些需转 pdk-test 集成框架(tests/requests.rs)。若 cargo test 因工具链错误失败,应先参照 pdk-prerequisites 完成环境准备。完整 pdk-unit API 见 pdk-templates/templates/unit_testing.md。官方文档:https://docs.mulesoft.com/pdk/latest/