Middle
Кадом дигар асбобҳо барои санҷиши шартнома вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
- Pact: Популярен инструмент за тестиране на договори Consumer-Driven Contracts (CDC). Поддържа множество езици и платформи.
- Spring Cloud Contract: Инструмент за тестиране на договори в екосистемата Spring. Може да се използва за CDC и тестиране на договори от страна на производител.
- Swagger/OpenAPI: Спецификация, описваща API. Може да се използва за генериране на клиентски stub-ове и валидиране на отговори.
- JSON Schema: Език за описание на структурата на JSON документи. Използва се за валидиране на договори.
- Protobuf (Protocol Buffers): Формат за сериализация, който може да се използва за определяне на договори между услуги.
- gRPC: RPC рамка с използване на Protobuf за определяне на договори на услуги.
Сравнение на Pact и Spring Cloud Contract:
| Характеристика | Pact | Spring Cloud Contract |
|---|---|---|
| Подход | CDC (Consumer-Driven Contracts) | CDC и тестиране на договори от страна на производител |
| Екосистема | Независим от езика и рамката | Ориентиран към екосистемата Spring |
| Генериране на stub-ове/мокове | Да (от страна на потребителя) | Да (от страна на производителя) |
| Контрактен брокер | Pact Broker | Git, Maven Central и други |
| Поддръжка на протоколи | HTTP, съобщения | HTTP, съобщения |
Пример за използване на Pact (DSL):
// Дефиниция на договор от страна на потребителя в Ruby с 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
преди do
provider_service_mock.upon_receiving "заявка за данни" do
with(method: :get, path: "/data")
end.will_respond_with(
status: 200,
headers: { "Content-Type" => "application/json" },
body: { message: like("Hello,") } // Използва се за съответствие
)
end
it "трябва да получи данни от доставчика" do
# Вашият код за потребителя, който прави заявката
# ...
expect(@response.status).to eq(200)
expect(@response.body).to include("Hello,")
end
end