Спасибо за этот вопрос. Да, Spring Cloud Contract может быть ориентирован на потребителя или производителя.
Определения контрактов могут находиться либо у производителя, либо во внешнем репозитории. Понятие ориентированного на потребителя не связано с тем, где хранятся контракты. Это связано с тем, кто их создает или кто на самом деле вносит изменения в эти контракты. Другое дело, может ли каждый потребитель определить набор собственных требований. Это означает, что у одного потребителя могут быть разные требования, чем у другого.
Таким образом, в Spring Cloud Contract для подхода, ориентированного на производителя, производитель просто создает контракты, и ему все равно, используют ли разные потребители свой API по-разному. Производитель API создает, например, 1 определение контракта для всех потребителей, и проблема потребителя заключается в том, чтобы согласовать его с этим контрактом.
В контрактах, ориентированных на потребителя, с Spring Cloud Contract, именно потребитель предлагает изменения и создает определения контрактов. Потребитель отправляет PR либо в репо группы производителей, либо в отдельное репо, где хранятся все определения контрактов. Это делает не производитель, а потребитель. Тем временем потребитель может создавать заглушки локально, не спрашивая разрешения у производителя, и прототипировать API. После того, как потребитель закончил свою работу и, конечно же, поговорил с командой разработчиков об изменениях до этого, можно отправить запрос на вытягивание с предложенными изменениями. Важно помнить, что у каждого потребителя есть своя папка со своими требованиями. Например. если есть потребители example1
и example2
и есть производитель producer1
, тогда в папке контракта producer1
будут две папки, одна example1
и вторая example2
. Оба будут содержать ожидания для конкретного потребителя.
Затем производитель берет на себя PR, и проверка происходит на стороне производителя. Сгенерированы тесты. После того, как реализация написана и тесты пройдут, можно загружать заглушки.
Наконец, на стороне потребителя потребители могут переключиться, чтобы начать выборку загруженных заглушек, чтобы всегда получать свежую версию заглушек.
Все рабочие процессы, связанные с выполнением контрактных тестов с помощью Spring Cloud Contract, можно найти здесь - https://docs.spring.io/spring-cloud-contract/docs/current/reference/html/using.html#using
person
Marcin Grzejszczak
schedule
01.08.2019