mcpField
A
api-contract-testing

api-contract-testing

github.com/aj-geddes测试与质量373916 次安装34 周前更新
代码仓库

关于 api-contract-testing

api-contract-testing 是一项用于验证 API 消费方与提供方约定的技能,无需依赖完整集成测试。内容包括契约和模式校验,以及保持 API 变更兼容的实践。

主要功能

  1. 01消费方与提供方契约测试
  2. 02请求和响应校验
  3. 03OpenAPI 与 JSON Schema 校验
  4. 04Pact 和 Postman 参考指南
  5. 05契约版本管理与 CI 指导

适用场景

  1. 01测试微服务间通信
  2. 02发现破坏性 API 变更
  3. 03检查向后兼容性
  4. 04验证第三方 API 契约

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-contract-testing

安装后在 Claude Code 中输入/api-contract-testing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
contract-testing-with-postman.md
json-schema-validation.md
openapi-schema-validation.md
pact-broker-integration.md
pact-for-consumer-driven-contracts.md
rest-assured-for-java.md
scripts/
scaffold-tests.sh
templates/
test-template.js

详细介绍

API 契约测试

目录

概述

契约测试用于验证 API 是否遵守消费者与提供者之间的契约。它能确保服务变更不会破坏依赖它的消费者,而无需进行完整的集成测试。契约测试会独立验证请求/响应格式、数据类型和 API 行为。

适用场景

  • 测试微服务之间的通信
  • 防止 API 发生破坏性变更
  • 验证 API 版本管理
  • 测试消费者与提供者之间的契约
  • 确保向后兼容性
  • 验证 OpenAPI/Swagger 规范
  • 测试第三方 API 集成
  • 在 CI 中捕获契约违规

快速开始

最简可运行示例:

// tests/pact/user-service.pact.test.ts
import { PactV3, MatchersV3 } from "@pact-foundation/pact";
import { UserService } from "../../src/services/UserService";

const { like, eachLike, iso8601DateTimeWithMillis } = MatchersV3;

const provider = new PactV3({
  consumer: "OrderService",
  provider: "UserService",
  port: 1234,
  dir: "./pacts",
});

describe("User Service Contract", () => {
  const userService = new UserService("http://localhost:1234");

  describe("GET /users/:id", () => {
    test("returns user when found", async () => {
      await provider
        .given("user with ID 123 exists")
        .uponReceiving("a request for user 123")
        .withRequest({
          method: "GET",
          path: "/users/123",
          headers: {
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
Pact 的消费者驱动契约Pact 的消费者驱动契约
OpenAPI Schema 验证OpenAPI Schema 验证
JSON Schema 验证JSON Schema 验证
Java 的 REST AssuredJava 的 REST Assured
使用 Postman 进行契约测试使用 Postman 进行契约测试
Pact Broker 集成Pact Broker 集成

最佳实践

✅ 应该做
  • 从消费者的角度测试契约
  • 使用匹配器实现灵活匹配
  • 验证 Schema 结构,而非特定值
  • 为契约设置版本
  • 测试错误响应
  • 使用 Pact broker 共享契约
  • 在 CI 中运行契约测试
  • 测试向后兼容性
❌ 不应该做
  • 在契约测试中测试业务逻辑
  • 在契约中硬编码特定值
  • 跳过错误场景
  • 在契约测试中测试 UI
  • 忽略契约版本管理
  • 未经契约验证就部署
  • 测试实现细节
  • 模拟契约测试

评论

支持 Markdown