Контракты, управляемые потребителями, для API C ++ - PullRequest
1 голос
/ 24 апреля 2019

Я занимаюсь разработкой статической библиотеки C ++, имеющей несколько публичных API.Я должен реализовать Consumer Driven Contract для API, которые предоставляет библиотека.Но в моем случае я должен предоставить контракт потребителям, с которыми они согласятся.

Источником вдохновения для внедрения Контрактного тестирования послужил PACT (https://docs.pact.io/). Контракт в PACT составлен в виде файла JSON и в основном основан на ответах REST и http.

Если мне нужно реализовать тестирование на основе контракта для API C ++. Тогда какой подход лучше. Я мог бы увидеть, что boost имеет Design By Contract, но это больше похоже на утверждения, но в файле, подобном PACT, контракт не определен. (https://www.boost.org/doc/libs/develop/libs/contract/doc/html/index.html)

Есть ли способ, которым контракт может быть определен в файле, и все API могут быть протестированы. Основная цель этого - тестирование в изоляции.

Не могли бы вы поделитьсянекоторые входные данные для реализации контрактов, определенных в файле, и написание тестовой программы для этих контрактов.

1 Ответ

1 голос
/ 24 апреля 2019

Я должен реализовать Consumer Driven Contract для API, которые предоставляет библиотека.Но в моем случае я должен предоставить покупателям контракт, по которому они согласятся.

Эти два утверждения несовместимы друг с другом.Предоставление контракта от до по своей природе не может ориентироваться на потребителя .

В любом случае, если вы хотите убедиться, что контрактСгенерированный и проверенный обеими сторонами, Pact в настоящее время не поддерживает C ++ - но это не значит, что вы не можете его использовать.

Просмотрите эти ссылки, чтобы протестировать как сторону потребителя, так и поставщика с использованием инструментов Pact.:

Если вы заключаете контракты с провайдером и вам не интересно знать, совместим ли сам потребитель, вы можете использовать что-то вроде Swagger (спецификация OpenAPI) для определения API, а затем использовать инструменты, такие как Dredd, чтобы увидетьесли совпадает.

...