Можно ли протестировать потребительскую сторону без заглушки в Spring-Cloud-Contract

В настоящее время я хочу протестировать обработку ошибок при вызове других микросервисов на стороне потребителя через весенний облачный контракт. Но есть некоторые проблемы, которые не позволяют мне создавать заглушки на стороне провайдера из-за того, что сложно делиться артефактами сборки в сборке Docker CI.

Мне интересно, можно ли просто создать контакты groovy или yaml на стороне потребителя, а затем использовать их на сервере Wiremock?


person Kane    schedule 12.06.2018    source источник


Ответы (1)


Есть способы добиться этого. Первый - клонировать код производителя, запустить ./mvnw clean install -DskipTests или ./gradlew publishToMavenLocal -x test и установить заглушки без выполнения каких-либо тестов. Другой вариант - написать свой собственный StubDownloaderBuilder (для Finchley), который будет получать контракты через Aether, как это делает AetherStubDownloader, но затем также автоматически конвертирует контракты в заглушки WIreMock.

Конечно, оба подхода - «жульничество». Вы не должны использовать заглушки в своей системе CI, пока производитель не опубликовал их.

Может, вместо того, чтобы взламывать систему, лучше проанализировать

на стороне провайдера из-за того, что в сборке Docker CI сложно делиться артефактами сборки.

и попытаться исправить? Почему это сложно? в чем именно проблема?:

person Marcin Grzejszczak    schedule 12.06.2018
comment
Мы делаем CI-сборку в конвейере gitlab, который использует образ докера для сборки gradle. Невозможно совместно использовать кеши gradle из-за хорошо известной проблемы. Похоже, он блокирует совместное использование заглушек через локальные артефакты установки в кешах gradle / maven. Публикация заглушек в удаленном репо может быть решением, для этого потребуется дополнительная поддержка со стороны инфраструктуры. - person Kane; 12.06.2018
comment
Вы можете использовать maven publish для публикации в репозитории maven, а затем ссылаться на это репо. Вы можете прикрепить это репо как том? - person Marcin Grzejszczak; 12.06.2018