В настоящее время мы реализовали тест контракта, управляемый поставщиком, с использованием Spring Cloud Contract. У нас есть несколько контрактов для каждой конечной точки провайдера, используемой потребителем. Затем верификатор контракта запускается на стороне поставщика и проверяет, соответствует ли фактическая структура конечной точки структуре указанного контракта. Затем созданный jar-заглушка публикуется в артефакте для использования потребителем. Что касается потребителя, у него есть свои собственные тесты, которые сравниваются с макетом провода, созданным заглушками производителя. Итак, наша текущая структура соответствует самой практике тестирования контрактов по инициативе провайдера.
Проблема
Проблема в том, что наш потребитель является ЕДИНСТВЕННЫМ ПОТРЕБИТЕЛЕМ провайдера, поэтому мы хотим, чтобы провайдер обслуживал вызовы, которые делает потребитель. Это связано с тем, что всякий раз, когда происходит изменение в потребителе (скажем, нам больше не нужно определенное поле от производителя), производитель не увидит изменения, внесенные в потребителя.
(Это своего рода одностороннее направление, при котором изменения в производителе отражаются на потребителе, но не наоборот.)
По сути, мы хотим, чтобы производитель потерпел неудачу, когда он не соответствует ожиданиям потребителя? (Мы не хотим, чтобы потребитель терпел неудачу из-за того, что изменения были внесены в производителя, мы хотим, чтобы производитель терпел неудачу при изменении вызовов от потребителя)
TLDR: Можно ли это сделать с помощью тестирования контракта?
Я изучал это в течение нескольких дней, но похоже, что традиционная практика Spring Cloud Contract следует практике, управляемой поставщиком, даже несмотря на то, что в нем говорится, что SCC изначально является CDC (управляемым потребителем). Контракт)?
Spring Cloud Contract Verifier — это инструмент, который позволяет разрабатывать приложения на основе JVM на основе потребительского контракта (CDC).
https://spring.io/projects/spring-cloud ... t#overview
Уже есть несколько обсуждений StackOverflow, которые ставят под сомнение это, но не дают четкого ответа о том, является ли это PDC или CDC.
- Контракт Spring Cloud – ориентирован ли он на потребителя?
- https://stackoverflow.com/questions/539 ... -producer-…
Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-testing
Мобильная версия