У меня есть этот класс для настройки экземпляра HttpClient
:
package com.company.fraud.preauth.service.feignaccertifyclient;
import com.company.fraud.preauth.config.ProviderClientConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
@Slf4j
@Configuration
@RequiredArgsConstructor
public class FeignClientConfig {
private final ProviderClientConfig providerClientConfig;
public HttpClient buildHttpClient() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
RequestConfig.Builder requestBuilder = RequestConfig.custom();
requestBuilder.setConnectTimeout(providerClientConfig.getConnectionTimeout());
requestBuilder.setConnectionRequestTimeout(providerClientConfig.getConnectionRequestTimeout());
requestBuilder.setSocketTimeout(providerClientConfig.getSocketTimeout());
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
return HttpClientBuilder.create()
.setMaxConnPerRoute(providerClientConfig.getMaxConnectionNumber())
.setDefaultRequestConfig(requestBuilder.build())
.setSSLContext(builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()).build())
.build();
}
}
Как провести модульное тестирование этого класса, чтобы увидеть в приведенном HttpClient
, что эти значения установлены правильно?
С httpClient
я не могу получить доступ к RequestConfig
.
Мне известны следующие два сообщения:
Как проверить приватную функцию или класс, у которого есть закрытые методы, поля или внутренние классы?
(Число upvotes в этом вопросе показывает, что она является одновременно и спорной темой в тестировании, и моя ситуация может привести пример, что почему мы должны смотреть на внутреннее состояние экземпляра в тестировании, несмотря на то что это частное)
Тайм-ауты модульного теста в Apache HttpClient
(он показывает способ добавления перехватчика в код для проверки значений конфигурации, но мне это не нравится, потому что я хочу разделить тесты функциональными кодами)
Есть ли способ? Я понимаю, что этот класс должен быть проверен, верно? Вы не можете слепо доверить это работе; и проверка «notNull» кажется мне хрупкой.
Эта ссылка может указывать мне правильное направление:
https://dzone.com/articles/testing-objects-internal-state
Используется PowerMock.Whitebox
для проверки внутреннего состояния экземпляра.