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 スキーマの検証OpenAPI スキーマの検証
JSON Schema の検証JSON Schema の検証
Java 向け REST AssuredJava 向け REST Assured
Postman を使ったコントラクトテストPostman を使ったコントラクトテスト
Pact Broker の統合Pact Broker の統合

ベストプラクティス

✅ 推奨事項
  • コンシューマーの視点からコントラクトをテストする
  • 柔軟に照合するためにマッチャーを使用する
  • 特定の値ではなく、スキーマ構造を検証する
  • コントラクトをバージョン管理する
  • エラーレスポンスをテストする
  • コントラクトの共有に Pact broker を使用する
  • CI でコントラクトテストを実行する
  • 後方互換性をテストする
❌ 禁止事項
  • コントラクトテストでビジネスロジックをテストする
  • コントラクトに特定の値をハードコードする
  • エラーシナリオを省略する
  • コントラクトテストで UI をテストする
  • コントラクトのバージョン管理を無視する
  • コントラクトを検証せずにデプロイする
  • 実装の詳細をテストする
  • コントラクトテストをモックする

コメント