首页 > 解决方案 > 如何在 Springboot 中创建假 FeignClient?

问题描述

我有 Real FeignClient,它从远程端点返回一些对象。

但是,在我开始要求新服务之前,我需要先测试我的实体/逻辑。我决定创建一个虚假的模拟服务,它将返回我需要的对象(最多 5 个)。

我如何在 SpringBoot 中伪造 FeignClient?

标签: javaspringspring-bootmocking

解决方案


你可以使用真正的 FeignClient,但让它与一个虚拟服务器对话。

一个简单的虚拟服务器是 Wiremock,你可以在你的 java 代码中启动它或者作为一个独立的 java 主类:

http://wiremock.org/docs/java-usage/

WireMockServer wireMockServer = new WireMockServer("localhost", 8090);
wireMockServer.start();
WireMock.configureFor("localhost", 8090);
WireMock.stubFor(get(urlEqualTo("/somethings"))
    .willReturn(aResponse()
            .withBodyFile("path/to/test.json")));

启动并配置好之后,在 FeignClient 中使用http://localhost:8090 。

一个主要优点是您也可以立即实现/测试 JSON 或 HTTP 映射,因此您可以确定 FeignClient 也已正确配置。您甚至可以模拟错误或延迟:

WireMock.stubFor(get(urlEqualTo("/somethings")).willReturn(
        aResponse()
                .withStatus(503)
                .withFixedDelay(10_000)));

推荐阅读