Sobes.tech
Middle

Milyen más eszközök léteznek szerződéses teszteléshez?

sobes.tech MI

Válasz az MI-től

  • Pact: Népszerű eszköz a Consumer-Driven Contracts (CDC) teszteléséhez. Támogatja több nyelvet és platformot.
  • Spring Cloud Contract: Eszköz a Spring ökoszisztémában lévő szerződések teszteléséhez. Használható CDC és producer oldalú szerződés tesztelésére.
  • Swagger/OpenAPI: Az API-t leíró specifikáció. Használható kliens stubok generálására és válaszok validálására.
  • JSON Schema: Nyelv a JSON dokumentumok szerkezetének leírására. A szerződések validálására használják.
  • Protobuf (Protocol Buffers): Sorosítási formátum, amelyet a szolgáltatások közötti szerződések meghatározására lehet használni.
  • gRPC: Protobuf-ot használó RPC keretrendszer a szolgáltatási szerződések meghatározására.

Pact és Spring Cloud Contract összehasonlítása:

Jellemző Pact Spring Cloud Contract
Megközelítés CDC (Consumer-Driven Contracts) CDC és producer oldalú szerződés tesztelés
Ökoszisztéma Nyelv- és keretrendszerfüggetlen A Spring ökoszisztémára fókuszálva
Stub/mocks generálás Igen (a fogyasztói oldalon) Igen (a gyártói oldalon)
Szerződés broker Pact Broker Git, Maven Central és mások
Protokoll támogatás HTTP, üzenetek HTTP, üzenetek

Pact (DSL) használatának példája:

// Fogyasztói oldal szerződés definíció Ruby-ban a Pact segítségével
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 "egy kérés adatért" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Helló,") } // Matcher használata
    )
  end

  it "adatokat kell kapnia a szolgáltatótól" do
    # A fogyasztói kód, amely a kérést végzi
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Helló,")
  end
end