如何在Spring Boot应用程序中的Feign客户端上使用WireMock?

时间:2016-09-19 14:50:48

标签: java spring spring-boot wiremock feign

我有一个使用Feign客户端的课程。之前我使用过Mockito并为Feign客户端中的每个方法调用提供了存储响应。现在我想使用WireMock,以便我可以看到我的代码正确处理不同类型的响应代码。我该怎么做呢?我无法弄清楚如何在测试中连接我的Feign客户端,并将其连接起来,以便它使用Wiremock而不是我在$str = 'SELECT count(`COLUMNNAME`) AS cnt FROM table WHERE .... 文件中设置的URL。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:5)

也许你想看一下这个项目https://github.com/ePages-de/restdocs-wiremock

这有助于您在spring mvc测试中生成和发布wiremock片段(使用spring-rest-docs)。

最后,您可以使用这些代码段启动线程服务器,以便在测试中提供这些记录的请求。

如果您回避这个集成解决方案,您可以在测试期间使用线程模式JUnit规则启动线程服务器。 http://wiremock.org/docs/junit-rule/

下面是一个示例测试,它使用动态线缆模式端口并配置功能区以使用此端口:(您使用假装和功能区吗?)

    @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()));
            }
        }
    }