Мы реализовали тест контракта, управляемый поставщиком, с помощью Spring Cloud Contract. У нас есть несколько контрактов для каждой конечной точки поставщика, используемой потребителем. Затем на стороне поставщика запускается верификатор контракта и проверяет, соответствует ли фактическая структура конечной точки структуре указанного контракта. Затем созданный JAR-заглушка публикуется в Artifactory для использования потребителем. Что касается потребителя, у него есть собственные тесты, которые сравниваются с макетом провода, созданным заглушками JAR-файлов производителя. Итак, это наша текущая структура, она соответствует самой практике тестирования контрактов, управляемых поставщиком.
Проблема
Проблема в том, что наш потребитель является единственным потребителем провайдера, поэтому мы хотим, чтобы поставщик обслуживал вызовы, которые делает потребитель. Это связано с тем, что всякий раз, когда происходит изменение в потребителе (скажем, нам больше не нужно определенное поле от производителя), производитель не увидит изменения, внесенные в потребителя.
(Это своего рода одностороннее направление, при котором изменения в производителе отражаются на потребителе, но не наоборот.)
По сути, мы хотим, чтобы производитель терпел неудачу, когда он не соответствует ожиданиям потребителя. Мы не хотим, чтобы потребитель терпел неудачу из-за того, что изменения были внесены в производителя, мы хотим, чтобы производитель терпел неудачу при изменении вызовов от потребителя.
TL;DR: Можно ли это сделать с помощью тестирования контракта?
Я изучал это в течение нескольких дней, но похоже, что традиционная практика Spring Cloud Contract следует практике, управляемой поставщиком, даже несмотря на то, что в ней говорится, что SCC изначально является CDC (Consumer-Driven Contract)?
Spring Cloud Contract Verifier — это инструмент, который позволяет разрабатывать приложения на основе JVM по потребительским контрактам (CDC).
https://spring.io/projects/spring-cloud ... t#overview
Уже есть несколько обсуждений Stack Overflow, которые ставят под сомнение это, но не дают четкого ответа о том, является ли это PDC или CDC.
- Spring Cloud Contract – ориентирован ли он на потребителя?
- При использовании Spring Cloud Contracts почему производитель создает контракты?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-testing
Мобильная версия