Тесты PACT и Spring Cloud Contract

Я пытаюсь понять лучший инструмент между PACT и Spring Cloud Contract для реализации тестов Consumer Driver Contract. Я не нахожу четких примеров, чтобы найти плюсы и минусы.

Я хочу реализовать CDCT, и я не использую Spring в своем проекте. Насколько я понял, я предполагаю, что PACT хорош.

Любая информация или предложения приветствуются. Спасибо.


person user3602058    schedule 27.08.2018    source источник
comment
Я пробовал и то, и другое. Pact - это более простой контракт на API для отдыха, который легко тестировать на разных языках, а Pact предоставляет сервер для обмена пактами между потребителем и провайдером. Контракты Spring Cloud предоставляют возможности тестирования для обмена сообщениями, особенно, Spring AMQP, Spring Cloud Stream и т. Д., Он также пытается поддерживать несколько языков и обеспечивает совместимость с Pact. Я создал для них несколько примеров: github.com/hantsy/spring-cloud-sample   -  person Hantsy    schedule 27.08.2018
comment
Спасибо! К вашему сведению, Pact также поддерживает сообщения   -  person Matthew Fellows    schedule 28.08.2018


Ответы (1)


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
comment
Этот ответ на самом деле не дает разницы между ними. Он просто говорит о SCC, фактически не отделяя его от Пакта. Например, контракты на тестирование первой строки как для REST API, так и для обмена сообщениями: вы также можете сделать это в Pact. - person Mugen; 30.03.2021
comment
Теперь вы можете, но раньше не могли, даже если это уже поддерживалось в SCC. - person OlgaMaciaszek; 31.03.2021