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