#server-sent-events #pact
#отправленные сервером события #пакт
Вопрос:
Мое текущее приложение включает конечную точку SSE, чтобы разрешить потоковый доступ к событиям, происходящим внутри. Все это работает хорошо, но мы хотели бы провести контрактное тестирование с использованием пакета для всех конечных точек, и я не могу найти способ определить пакт для данных события потока, который выглядит следующим образом:
data: {"foo": "bar"}
data: {"bar": "foo"}
...
в результатах curl.
Может кто-нибудь указать мне на пример соглашения для проверки контракта SSE?
Ответ №1:
В пакте есть концепция, называемая пактом сообщений. Пакт сообщений поддерживает асинхронные вызовы и абстрагирует конкретный протокол.
Какой язык вам нужен?
Например, вот документы для Pact JS: https://github.com/pact-foundation/pact-js/#asynchronous-api-testing
Пример потребительского теста для события продукта будет выглядеть следующим образом:
describe("receive product event", () => {
it("accepts a product", () => {
return (
messagePact
.given("product created")
.expectsToReceive("a product created event")
.withContent({
id: like(1),
name: like("pizza"),
})
.withMetadata({
"content-type": "application/json",
})
.verify(synchronousBodyHandler(productApiHandler))
)
})
})