Sobes.tech
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