SuperAPI AI 工具集

contract-testing

测试与质量

查看项目

更新于 10-16 03:48

技能介绍

用途:面向微服务通信、第三方 API 集成和分布式团队协作,通过消费者驱动契约测试防止接口破坏性变更。核心流程是消费者定义期望的请求/响应契约,提供者验证是否满足所有消费者契约,CI/CD 在部署前拦截破坏契约的变更。

主要能力:使用 Pact 编写消费者契约与提供者验证;结合 OpenAPI/Swagger、JSON Schema、GraphQL 做 schema 校验;检测破坏性变更并给出语义化版本建议(删除字段、重命名字段、改类型为 major;新增可选字段、新增端点为 minor;缺陷修复为 patch);生成迁移指南;通过 Pact Broker 发布契约并执行 can-i-deploy 判断。

使用方式:消费者侧用 @pact-foundation/pact 的 Pact 类定义交互,提供者侧用 Verifier 验证契约并配置 stateHandlers;CI 中先跑消费者契约测试并发布 Pact,再验证提供者,最后用 pact-broker can-i-deploy 决定能否部署。命令保持原样:npm run test:contract、npx pact-broker publish ./pacts --broker-base-url $PACT_BROKER、npm run verify:contracts、npx pact-broker can-i-deploy --pacticipant OrderService --version $VERSION。

适用场景:微服务间接口、第三方 API 集成、多团队协作、需要向后兼容与版本管理的 API。

限制与注意:运行前必须配置 Pact Broker URL,否则生成的测试会静默跳过验证;消费者测试本地通过但 CI 失败常因提供者状态未设置,需两侧都验证;向响应新增必填字段即使提供者测试通过也属破坏性变更;契约应反映真实消费者需求,不应仅从 API 文档生成;GraphQL 契约测试需注意 schema 拼接,片段可能引用其他服务的类型。v3 代理命令、GraphQL 契约、事件契约与 Pact Broker 集成细节见 references/agent-commands.md。