Spring Cloud OpenFeign - 如何创建测试切片?

hen*_*els 4 java spring spring-boot spring-cloud-feign feign

我有一个 Feign 客户端测试,我想设置一个测试片,例如@WebMvcTest@DataJpaTest等。

例如,以下测试使用@SpringBootTest并加载所有应用程序上下文:

@SpringBootTest
@AutoConfigureWireMock(port = 0)
class AgePredictorFeignClientTest {

    @Autowired
    private AgePredictorFeignClient agePredictorFeignClient;

    @Test
    void getAge() {
        stubFor(get(urlEqualTo("/age-api?name=Henrique"))
                .willReturn(aResponse().withBodyFile("25_years_old.json")
                        .withHeader("Content-Type", "application/json")));

        Integer age = agePredictorFeignClient.getAge("Henrique").getAge();

        assertThat(age).isEqualTo(25);

        verify(getRequestedFor(urlEqualTo("/age-api?name=Henrique")));
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何更改此测试以仅加载与 Spring Cloud OpenFeign 相关的上下文?

此测试的应用程序的源代码位于https://github.com/henriquels25/openfeign-tests-sample

Naz*_*eem 5

目前还没有开箱即用的解决方案来提供像 @FeignTest 这样的东西。然而,有人为此找到了解决方案,可以在这里找到。该解决方案添加了所需的功能。它还被提议到 spring-cloud-openfeign

如果您不想包含上述依赖项,我通过手动导入一些 AutoConfiguration 类来创建一个示例,以仅加载必要的功能。请参阅此处,了解使用此测试配置进行测试的 Feign 客户端

唯一的缺点是wiremock随机端口无法及时扩展。这就是为什么它有一个固定端口。