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