Как создать поддельный FeignClient в Springboot? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть Real FeignClient, который возвращает некоторые объекты из удаленной конечной точки.

Однако, прежде чем я начну запрашивать новую услугу, мне нужно сначала проверить мою сущность / logi c. Я решил создать поддельный сервис, который будет возвращать нужные мне объекты (максимум 5).

Как я могу подделать FeignClient в SpringBoot?

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете использовать настоящий 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")));

После того, как это будет запущено и настроено, используйте http://localhost: 8090 в вашем FeignClient .

Основным преимуществом является то, что вы можете сразу же реализовать / протестировать сопоставления JSON или HTTP, так что вы уверены, что FeignClient также настроен правильно. Вы даже можете симулировать ошибки или задержки:

WireMock.stubFor(get(urlEqualTo("/somethings")).willReturn(
        aResponse()
                .withStatus(503)
                .withFixedDelay(10_000)));
1 голос
/ 21 апреля 2020

Вы можете использовать аннотацию @Primary для переопределения реализации по умолчанию.

В вашем файле конфигурации java:

@Bean
@Primary // this anotation will override the system implementation
public FeignClient feignClient() {
 // create and return a fake FeignClient here.
return MyFakeImplementationFeignClient();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...