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

标签 java spring spring-boot wiremock feign

我有一个使用 Feign 客户端的类。以前我使用 Mockito 并为 Feign 客户端中的每个方法调用提供存储的响应。现在我想使用 WireMock,这样我就可以看到我的代码正确处理了不同类型的响应代码。我该怎么做呢?我不知道如何在测试中连接我的 Feign 客户端,并连接它以便它使用 Wiremock 而不是我在 application.yml 文件中设置的 URL。任何指针将不胜感激。

最佳答案

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

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

最后,您可以使用这些片段启动一个 wiremock 服务器来为您的测试中记录的这些请求提供服务。

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

这是一个示例测试,它使用动态 wiremock 端口并配置 ribbon 以使用此端口:(您使用的是 feign 和 ribbon 吗?)

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

关于java - 如何在 Spring Boot 应用程序的 Feign 客户端上使用 WireMock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576111/

相关文章:

java - Java非堆内存和栈内存有什么区别?如果不是,它们是否相同?它们之间有什么区别?

java - 如何在现有的 tomcat Web 应用程序上实现 SSO

spring-boot - 使用 maven 给出的 spring 配置文件运行 SpringBootTest

java - 登录 DTO 在 Spring Controller 中不起作用

java - Spring Boot 白标 404

java - 如果 Derby 只是客户端/服务器,我怎样才能将我的数据库文件放在我的特定文件夹中?

java - 如何检查字符串数组为空或null android?

java - 如何一起使用@RequestBody和@RequestParam

java - 使用大数据调用 post Rest api 时抛出错误

java - Firebase ML KIT 无法识别古吉拉特语