Sobes.tech
Middle

Shartnoma testlari uchun qanday boshqa vositalar mavjud?

sobes.tech AI

AIdan javob

  • Pact: Consumer-Driven Contracts (CDC) testlari uchun mashhur vosita. Ko'p tillar va platformalarni qo'llab-quvvatlaydi.
  • Spring Cloud Contract: Spring ekotizimida kontraktlarni test qilish uchun vosita. CDC va ishlab chiqaruvchi tomon kontrakt testlari uchun ishlatilishi mumkin.
  • Swagger/OpenAPI: API ni tavsiflovchi spetsifikatsiya. Mijoz stublarini yaratish va javoblarni tekshirish uchun ishlatiladi.
  • JSON Schema: JSON hujjatlarning tuzilishini tavsiflovchi til. Kontraktlarni tasdiqlashda ishlatiladi.
  • Protobuf (Protocol Buffers): Servislar o'rtasida kontraktlarni aniqlash uchun ishlatiladigan serializatsiya formatidir.
  • gRPC: Protobuf yordamida xizmat kontraktlarini aniqlash uchun RPC framework.

Pact va Spring Cloud Contract taqqoslamasi:

Xususiyat Pact Spring Cloud Contract
Yondashuv CDC (Consumer-Driven Contracts) CDC va ishlab chiqaruvchi tomon kontrakt testlari
Ekotizim Til va frameworkdan mustaqil Spring ekotizimiga yo'naltirilgan
Stub/mock yaratish Ha (mijoz tomonida) Ha (ishlab chiqaruvchi tomonida)
Kontrakt brokeri Pact Broker Git, Maven Central va boshqalar
Protokollarni qo'llab-quvvatlash HTTP, xabarlar HTTP, xabarlar

Pact (DSL) dan foydalanish misoli:

// Ruby'da Pact yordamida mijoz tomon kontrakti ta'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 "ma'lumot uchun so'rov" do
      with(method: :get, path: "/data")
    end.will_respond_with(
      status: 200,
      headers: { "Content-Type" => "application/json" },
      body: { message: like("Salom,") } // Matcher ishlatilgan
    )
  end

  it "provider'dan ma'lumot olishi kerak" do
    # Sizning mijoz kodingiz so'rov yuboradi
    # ...
    expect(@response.status).to eq(200)
    expect(@response.body).to include("Salom,")
  end
end