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