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 из коробки и может использоваться вместо обнаружения служб во время интеграционных тестов.
Он также сразу интегрируется с Pact и позволяет использовать дополнительные функции Pact с помощью хуков, используя только определения контрактов SCC.
SCC также предоставляет возможность на основе Docker для реализации и тестирования контрактов в технологиях, отличных от JVM.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я подписал контракт с Spring Cloud.
person
OlgaMaciaszek
schedule
27.08.2018