Интеграционные тесты не выполняются после введения RestTemplate с пользовательскими ConnectionPool и RequestFactory - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь ввести пользовательский PoolingHttpClientConnectionManager для моего приложения SpringBoot. Я следовал этому руководству: https://springframework.guru/using-resttemplate-with-apaches-httpclient/

Я настроил ConnectionManager, KeepAliveStrategy и настроил компонент httpClient. После этого я настроил RestTemplateConfig с новым httpClient и пользовательским RequestFactory методом

  @Autowired
  public RestTemplateConfig(CloseableHttpClient httpClient) {
    this.httpClient = httpClient;
  }

  @Bean
  public HttpComponentsClientHttpRequestFactory clientHttpRequestFactory() {
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
    clientHttpRequestFactory.setHttpClient(httpClient);
    return clientHttpRequestFactory;
  }

У меня есть более одного RestTemplate Бина, все они квалифицированы по имени, в методах я указываю фабричный метод (я пробовал два способа)

.requestFactory(() -> new BufferingClientHttpRequestFactory(clientHttpRequestFactory()))

.requestFactory(this::clientHttpRequestFactory)

После того, как я внес свои изменения, интеграционные тесты начинают давать сбой. В журналах WireMock я вижу, что мои заглушки созданы и они есть, но когда мой interceptor выполняет вызов

ClientHttpResponse httpResponse = execution.execute(request, body);

httpResponse равен NULL

I ' Я не уверен, что мне не хватает настройки WireMock или я что-то неправильно настроил, и это даже не сработает. IRL

Если я удаляю настройку requestFactory(), тогда все тесты снова проходят, что заставляет меня склоняться к тот факт, что что-то настроено неправильно.

Заранее спасибо!

...