Sobes.tech
Middle

Müqavilə testləri üçün digər alətlər hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

  • Pact: Müştəri-Əsaslı Kontraktlar (CDC) testləri üçün məşhur alətdir. Bir çox dil və platformanı dəstəkləyir.
  • Spring Cloud Contract: Spring ekosistemində kontraktların test edilməsi üçün alətdir. CDC və istehsalçı tərəf kontrakt testləri üçün istifadə oluna bilər.
  • Swagger/OpenAPI: API-ni təsvir edən spesifikasiya. Müştəri stublarının yaradılması və cavabların doğrulanması üçün istifadə edilə bilər.
  • JSON Schema: JSON sənədlərinin strukturunu təsvir edən dil. Kontraktların doğrulanmasında istifadə olunur.
  • Protobuf (Protocol Buffers): Servislər arasında kontraktların müəyyənləşdirilməsi üçün istifadə edilən serializasiya formatıdır.
  • gRPC: Protobuf istifadə edən RPC çərçivəsidir və xidmət kontraktlarının müəyyənləşdirilməsi üçün istifadə olunur.

Pact və Spring Cloud Contract-un müqayisəsi:

Xüsusiyyət Pact Spring Cloud Contract
Yanaşma CDC (Consumer-Driven Contracts) CDC və istehsalçı tərəf kontrakt testləri
Ekosistem Dildə və çərçivədən müstəqil Spring ekosisteminə yönəlib
Stub/mock yaradılması Bəli (Müştəri tərəfində) Bəli (İstehsalçı tərəfində)
Kontrakt brokeri Pact Broker Git, Maven Central və digərleri
Protokol dəstəyi HTTP, mesajlar HTTP, mesajlar

Pact (DSL) istifadə nümunəsi:

// Ruby-də Pact istifadə edərək müştəri tərəfi kontraktın tərifi
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 "məlumat üçün sorğu" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Salam,") } // Matcher istifadə edilərək
    )
  end

  it "provider-dan məlumat almalıdır" do
    # Sizin müştəri kodunuz sorğu göndərir
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Salam,")
  end
end