Sobes.tech
Middle

Welche anderen Werkzeuge gibt es für Vertragstests?

sobes.tech KI

Antwort von AI

  • Pact: Beliebtes Tool zum Testen von Consumer-Driven Contracts (CDC). Unterstützt viele Sprachen und Plattformen.
  • Spring Cloud Contract: Tool zum Testen von Verträgen im Spring-Ökosystem. Kann für CDC und Producer-side Contract Testing verwendet werden.
  • Swagger/OpenAPI: Spezifikation, die die API beschreibt. Kann zur Generierung von Client-Stubs und zur Validierung von Antworten verwendet werden.
  • JSON Schema: Sprache zur Beschreibung der Struktur von JSON-Dokumenten. Wird zur Validierung von Verträgen verwendet.
  • Protobuf (Protocol Buffers): Serialisierungsformat, das zur Definition von Verträgen zwischen Diensten verwendet werden kann.
  • gRPC: RPC-Framework, das Protobuf zur Definition von Service-Verträgen nutzt.

Vergleich zwischen Pact und Spring Cloud Contract:

Merkmal Pact Spring Cloud Contract
Ansatz CDC (Consumer-Driven Contracts) CDC und Producer-side Contract Testing
Ökosystem Plattform- und sprachunabhängig Für das Spring-Ökosystem optimiert
Stubs/Mocks generieren Ja (auf Consumer-Seite) Ja (auf Producer-Seite)
Vertragsbroker Pact Broker Git, Maven Central und andere
Protokollunterstützung HTTP, Nachrichten HTTP, Nachrichten

Beispiel für Pact (DSL):

// Verbraucher-Seitenvertrag in Ruby mit Pact
Pact.service_consumer "Consumer Service" do
  has_pact_with "Provider Service" do
    mock_service "provider_service_mock" do
      port 1234
    end
  end
end

describe "GET /data" do
  before do
    provider_service_mock.upon_receiving "eine Anfrage nach Daten" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Hallo,") } // Matcher verwenden
    )
  end

  it "sollte Daten vom Anbieter erhalten" do
    # Dein Verbraucher-Code, der die Anfrage stellt
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Hallo,")
  end
end