Как с помощью Spring Cloud Contract настроить несколько заглушек Wiremock для разных хостов/портов?

Каков наилучший способ настроить несколько заглушек Wiremock с помощью Spring Cloud Contract, которые имеют разные хосты/порты и оба вызываются в коде, выполняемом одним методом @Test? Например, я хочу протестировать ServiceA.doSomething(), и этот метод вызывает ServiceB.doSomethingElse() и ConsulClient.getKVValue(). У меня нет проблем с созданием одного экземпляра WireMockRestServiceServer, но я не понял, как создать второй для использования в том же тесте, который указывает на другой базовый URL-адрес. Причина, по которой я пытаюсь это сделать, заключается в том, что мне нужно заглушить вызовы, которые мы делаем в Consul, и мне нужно, чтобы эти запросы всегда отправлялись на http://localhost:8500, в результате чего другие мои запросы отправляются через RestTemplate с балансировкой нагрузки. Надеюсь, я ясно объяснил свой сценарий.


person Keith Bennett    schedule 20.12.2016    source источник


Ответы (1)


С точки зрения Stub Runner у вас может быть сервер HttpStub для каждой зависимости - вы просто указываете другой порт для строковой нотации вашей зависимости. Пример @AutoConfigureStubRunner(ids = {"com.example:beer-api-producer:+:stubs:8090", "a.b:artifact:0.0.1.RELEASE:prod-stubs:9999"}). Вы можете отключить балансировку нагрузки, как мы описываем здесь — http://cloud.spring.io/spring-cloud-contract/1.0.x/spring-cloud-contract.html#_stub_runner_spring_cloud

person Marcin Grzejszczak    schedule 20.12.2016