Я играл с Spring Cloud Contracts. Вот мое понимание рабочего процесса на данный момент.
На стороне сервера
- Напишите договор (на Groovy или на ямле)
- Автоматически генерировать тесты (с использованием плагина gradle)
- Setup BaseClass, который выполняет соответствующие настройки для контроллера
- Запустите автоматически сгенерированные тесты
- Опубликуйте созданный файл jar-заглушки в некотором локальном репо (который содержит встроенный сервер Wiremock с запросом / ответами).
На стороне клиента
- Загрузите файл-заглушку jar
- Напишите тесты для этой заглушки. Используйте stubrunner для проверки ответов
Чего я не понимаю, так это того, как движется этот Потребитель? Кажется, что контракты исходят от производителя, потребитель, кажется, пассивно тестирует то, что опубликовал производитель (используя файл jar-заглушек). Продюсер мог случайно не обновить контракты, а внести критические изменения. Это может привести к прохождению тестов на клиенте, даже если он должен был дать сбой. Это правда, или я неправильно понял шаг, на котором контракты создаются со стороны потребителя?
Мысли?