Sobes.tech
Middle

Jaké další nástroje existují pro testování smluv?

sobes.tech AI

Odpověď od AI

  • Pact: Oblíbený nástroj pro testování kontraktů typu Consumer-Driven Contracts (CDC). Podporuje mnoho jazyků a platforem.
  • Spring Cloud Contract: Nástroj pro testování kontraktů v ekosystému Spring. Může být použit pro CDC a testování kontraktů na straně výrobce.
  • Swagger/OpenAPI: Specifikace popisující API. Může být použita pro generování klientských stubů a validaci odpovědí.
  • JSON Schema: Jazyk pro popis struktury JSON dokumentů. Používá se pro validaci kontraktů.
  • Protobuf (Protocol Buffers): Formát serializace, který může být použit pro definování kontraktů mezi službami.
  • gRPC: RPC framework využívající Protobuf pro definování kontraktů služeb.

Porovnání Pact a Spring Cloud Contract:

Vlastnost Pact Spring Cloud Contract
Přístup CDC (Consumer-Driven Contracts) CDC a testování kontraktů na straně výrobce
Ekosystém Nezávislý na jazyku a frameworku Zaměřen na ekosystém Spring
Generování stubů/mocks Ano (na straně konzumenta) Ano (na straně výrobce)
Broker kontraktů Pact Broker Git, Maven Central a další
Podpora protokolů HTTP, zprávy HTTP, zprávy

Příklad použití Pact (DSL):

// Definice kontraktu na straně konzumenta v Ruby pomocí 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 "požadavek na data" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Ahoj,") } // Použití matcheru
    )
  end

  it "by měl obdržet data od poskytovatele" do
    # Váš kód konzumenta, který provádí požadavek
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Ahoj,")
  end
end