Middle
Kokie kiti įrankiai yra sutarties testavimui?
sobes.tech AI
Atsakymas iš AI
- Pact: Populiarus įrankis kontraktų testavimui Consumer-Driven Contracts (CDC). Palaiko daugybę kalbų ir platformų.
- Spring Cloud Contract: Įrankis kontraktų testavimui Spring ekosistemoje. Gali būti naudojamas CDC ir Producer pusės kontraktų testavimui.
- Swagger/OpenAPI: API aprašymo specifikacija. Gali būti naudojama klientų stub'ų generavimui ir atsakymų validavimui.
- JSON Schema: Kalba JSON dokumentų struktūros aprašymui. Naudojama kontraktų validavimui.
- Protobuf (Protocol Buffers): Serijalizacijos formatas, kuris gali būti naudojamas tarp paslaugų apibrėžiant kontraktus.
- gRPC: RPC karkasas, naudojantis Protobuf paslaugų kontraktų apibrėžimui.
Palyginimas tarp Pact ir Spring Cloud Contract:
| Savybė | Pact | Spring Cloud Contract |
|---|---|---|
| Požiūris | CDC (Consumer-Driven Contracts) | CDC ir Producer pusės kontraktų testavimas |
| Ekosistema | Nepriklausomas nuo kalbos ir karkaso | Orientuotas į Spring ekosistemą |
| Stub'ų/mokų generavimas | Taip (naudotojo pusėje) | Taip (gamybos pusėje) |
| Kontraktų brokeris | Pact Broker | Git, Maven Central ir kt. |
| Protokolų palaikymas | HTTP, žinutės | HTTP, žinutės |
Pavyzdys Pact naudojimo (DSL):
// Naudotojo pusės kontrakto apibrėžimas Ruby kalba naudojant 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
prieš do
provider_service_mock.upon_receiving "užklausą duomenims" do
with(method: :get, path: "/data")
end.will_respond_with(
status: 200,
headers: { "Content-Type" => "application/json" },
body: { message: like("Hello,") } // Naudojama atsakymui suderinti
)
end
it "turėtų gauti duomenis iš tiekėjo" do
# Jūsų naudotojo kodas, kuris siunčia užklausą
# ...
expect(@response.status).to eq(200)
expect(@response.body).to include("Hello,")
end
end