Agent Skills
返回列表
💻

API契约测试

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/testing-api-contract。

技能介绍

前后端协作中的接口漂移问题

前后端分离开发时,最常见的痛点是接口定义不同步:后端改了字段,前端还在用旧结构调接口;或者前端期待某个响应,后端却从未承诺过这个格式。微服务架构下这个问题更严重——一个服务的 schema 变更可能悄悄破坏多个下游消费者。等到联调阶段才发现,修复成本远高于在开发早期拦截。

契约测试的核心思路

契约测试的出发点是把「接口约定」变成可执行、可验证的制品。本技能支持两条主要路径:

  • OpenAPI/Swagger 优先:后端先产出 openapi.yaml,前端基于 spec 生成 mock server 和类型定义,后端则用工具验证自身实现与 spec 一致。适合 spec 先行、文档驱动的团队。
  • Pact 优先(消费者驱动):前端先声明「我期望的请求和响应」,生成 Pact 契约文件,后端再回放验证。适合微服务迭代快、消费者数量多的场景。

关键步骤与工具链

  1. Mock Server 搭建:Prism 支持 npx @stoplight/prism-cli mock openapi.yaml 零代码启动;需要类型安全时用 openapi-typescript + openapi-msw 生成 handler;需要动态响应、状态切换时切换到 Mockoon 或 WireMock。
  2. 契约测试编写:OpenAPI 侧用 @apidevtools/swagger-parser 校验 spec 合法性,用 openapi-changes 检测差异;Pact 侧分别在消费者端定义交互、在提供者端用 pactVerify() 回放验证。
  3. CI 集成:PR 中自动校验 spec 格式,对比 base 分支检测 breaking change,通过 Pact broker 管理契约版本。

适用边界

本技能聚焦接口契约层面,不替代以下场景:

  • 单服务内部逻辑测试请用 vitest-unit
  • 端到端功能测试请用 playwright-e2e

契约测试的价值在于「尽早发现约定偏离」,它不能告诉你业务逻辑是否正确,但能让你在代码合并前就确认接口没有悄悄跑偏。

使用场景

  • 前后端分离开发,后端已提供 OpenAPI spec,前端需要搭建 mock server 独立推进页面开发
  • 微服务迭代中,需要对比 base 分支的 spec 差异,自动检测破坏性 API 变更
  • 采用 Pact 做消费者驱动契约测试,需要为前端编写预期交互并生成契约文件
  • OpenAPI spec 变更频繁,需要在 PR 中自动校验格式合法性并生成变更报告

适合人员

  • 前后端分离团队的前端工程师,需要在后端接口未就绪时基于 spec 搭建 mock server 独立开发
  • 微服务架构下的后端工程师,需要确保 API schema 变更不会破坏下游消费者
  • 负责 API 质量保障的 DevOps 工程师,需要在 CI 流水线中集成契约测试与 breaking change 检测
  • 技术负责人或架构师,需要为团队制定接口契约策略,选择 OpenAPI 或 Pact 方案