Почему Stub Runner не загружает сервер Wiremock в режиме Classpath? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь запустить некоторые тесты в своем потребительском приложении с помощью Stub Runner Spring Cloud Contract.

Я заметил, что когда свойство stubsMode имеет значение LOCAL.

@AutoConfigureStubRunner(
        stubsMode = StubRunnerProperties.StubsMode.LOCAL,
        ids = "com.example:spring-cloud-contract-producer:+:stubs:8090")

моя сборка прошла успешно, потому что встроенный экземпляр Wiremock загружается и прослушивает этот порт.

Однако, если я изменю свойство stubsMode на CLASSPATH, моя сборка завершится неудачно, поскольку тест не может установить sh a подключение к этому порту.

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8090/validate/prime-number": Connect to localhost:8090 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused); nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:8090 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)

Согласно документам , это должно влиять только на то, как загружаются заглушки:

StubRunnerProperties.StubsMode.CLASSPATH ( значение по умолчанию) - выберет заглушки из classpath

Что я здесь не так делаю? Заранее спасибо!

1 Ответ

0 голосов
/ 03 марта 2020

Если вы включите режим classpath, то, как следует из названия, вам нужно иметь зависимости от вашего classpath. Баночка с заглушками должна содержать предопределенную структуру, описанную в документации. В общем случае, в вашем случае это будет папка META-INF/com.example/spring-cloud-contract-producer/mappings с заглушками WireMock внутри. Если у вас нет заглушек продюсера на вашем пути к классам, режим classpath не будет работать.

...