Как использовать WireMock на поддельном клиенте в приложении Spring Boot?

У меня есть класс, который использует поддельный клиент. Ранее я использовал Mockito и дал сохраненный ответ для каждого из вызовов метода в клиенте Feign. Теперь я хочу использовать WireMock, чтобы я мог видеть, что мой код правильно обрабатывает различные типы кодов ответа. Как мне это сделать? Я не могу понять, как подключить моего фальшивого клиента в тесте и подключить его так, чтобы он использовал Wiremock вместо URL, который я установил в своем . Любые указатели были бы очень оцененный.

1 ответов


может быть, вы хотите посмотреть на этот проект https://github.com/ePages-de/restdocs-wiremock

Это поможет вам генерировать и публиковать фрагменты wiremock в тестах spring mvc (используя spring-rest-docs).

наконец, вы можете использовать эти фрагменты для запуска сервера wiremock для обслуживания этих записанных запросов в тесте.

Если вы уклоняетесь от этого комплексного решения, вы можете просто использовать правило Wiremock JUnit для запуска вашего wiremock сервер во время теста. http://wiremock.org/docs/junit-rule/

вот пример теста, который использует динамический порт wiremock и настраивает ленту для использования этого порта: (вы используете feign и ленту?)

    @WebAppConfiguration
    @RunWith(SpringRunner.class)
    @SpringBootTest()
    @ActiveProfiles({"test","wiremock"})
    public class ServiceClientIntegrationTest {

        @Autowired //this is the FeignClient service interface
        public ServiceClient serviceClient;

        @ClassRule
        public static WireMockRule WIREMOCK = new WireMockRule(
                wireMockConfig().fileSource(new ClasspathFileSource("path/to/wiremock/snipptes")).dynamicPort());

        @Test
        public void createSome() {
            ServiceClient.Some t = serviceClient.someOperation(new Some("some"));
            assertTrue(t.getId() > 0);
        }

//using dynamic ports requires to configure the ribbon server list accordingly
        @Profile("wiremock")
        @Configuration
        public static class TestConfiguration {

            @Bean
            public ServerList<Server> ribbonServerList() {
                return new StaticServerList<>(new Server("localhost", WIREMOCK.port()));
            }
        }
    }