Spring Cloud Contract позволяет вам определять и тестировать контракты как для REST API, так и для обмена сообщениями.Он предоставляет понятный и простой в использовании статический тип Groovy DSL, а также позволяет определять контракты через yaml.Как с DSL, так и с yaml, определение контрактов очень интуитивно понятно любому, кто знаком со стандартными терминами HTTP / обмена сообщениями, например:
request {
method PUT()
url '/fraudcheck'
body([
"client.id": $(regex('[0-9]{10}')),
loanAmount: 99999
])
headers {
contentType('application/json')
}
}
response {
status OK()
body([
fraudCheckStatus: "FRAUD",
"rejection.reason": "Amount too high"
])
headers {
contentType applicationJson()
}
}
Тесты на стороне производителя автоматически генерируются SCC и добавляются впроект во время сборки.Если правильная реализация, выполняющая контракты, отсутствует, проект не будет построен и развернут.Если они пройдут, будут созданы и опубликованы заглушки для потребителя вместе с соответствующей версией артефакта.
На стороне потребителя для HTTP SCC предоставляет Stubrunner, который запускает Wiremock (http-сервер в памяти)экземпляр, который предоставляет заглушки ответы на соответствующие запросы.Stubrunner работает с внешними репозиториями артефактов, такими как Nexus и Artifactory, а также с локальными репозиториями m2.
SCC легко интегрируется с SpringBoot, а также интегрируется с Spring Cloud из коробки и может использоваться вместо обнаружения служб во время интеграцииtests.
Он также интегрируется с Pact и позволяет использовать дополнительные функции Pact через ловушки, используя только определения контрактов SCC.
SCC также предоставляет опцию на основе Docker для реализациии тестирование контрактов в технологиях, отличных от JVM.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь участником Spring Cloud Contract.