Использование Spring Cloud Contract Stub Runner с вручную созданными заглушками

Я не уверен, используется ли spring-cloud-contract для упомянутой мною цели в заголовке правильно или нет, но я хочу понять его вариант использования в таком сценарии.

Мы обновляем наши интеграционные тесты, чтобы использовать Spring Cloud Contract. Что касается новых функций, мы следуем документации по созданию заглушек из YAML / Groovy, а затем используем их на стороне потребителя с помощью spring-cloud-starter-contract-stub-runner.

Меня беспокоят уже написанные и используемые заглушки. Мы не хотим тратить время на их переписывание в Groovy / YAML, чтобы сделать Spring Cloud Contract для генерации заглушек, поскольку заглушки у нас уже есть. Существующая тестовая конфигурация выглядит следующим образом:

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = Application.class
)
@AutoConfigureWireMock(port = 8989, stubs = "classpath*:**/stubs/mappings/**/*.json", files = "classpath*:**/stubs")
class MyClientIT { ... }

Когда дело доходит до изменения этого теста для использования spring-cloud-contract, я застрял с тем, как настроить stub-runner:

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = Application.class
)
@AutoConfigureMockMvc
@AutoConfigureStubRunner(???)
public class MyNewClientIT {...}

Можно ли и рекомендуется ли использовать Spring Cloud Contract для такого случая? И если да, то как мы можем сделать так, чтобы stub-runner видел локально сохраненные (не сохраненные как артефакт локально или удаленно) заглушки?

Спасибо...




Ответы (1)


Самый простой способ - взять заглушки и переупаковать их, чтобы они соответствовали структуре папок META-INF/group.id/artifactid/mappings/.... Затем вы можете использовать режим пути к классам Stub Runner, чтобы выбрать эти заглушки через идентификаторы.

person Marcin Grzejszczak    schedule 30.01.2019
comment
Спасибо, что я должен определить для group.id и artifactid? Те, что из самого проекта? - person GokcenG; 31.01.2019
comment
да. Например. com.example / идентификатор-артефакта. Кстати все описано в документации - person Marcin Grzejszczak; 01.02.2019
comment
Спасибо, Марчин, честно говоря, документация больше ориентирована на полное принятие. Было бы очень полезно иметь раздел для смешанного подхода. - person GokcenG; 14.02.2019
comment
Мы будем работать над этим в следующем выпуске. Один из наших главных приоритетов - улучшение документации. - person Marcin Grzejszczak; 14.02.2019