Я использую джерси 2test jersey 2 client and webtarget
У меня есть абстрактный класс, с помощью которого я строю свою просьбу. Теперь у меня также есть некоторые абстрактные классы клиентов, которые я использую как прокси-классы и фактические реализации. Они работают хорошо, но непроверены.
Мой вопрос в том, как я мог проверить это, без необходимости запуска веб-сервиса, к которому он подключается?
public abstract class AbstractRestProxy {
private Client client;
private WebTarget service;
/**
* Get the base {@link Client} and {@link WebTarget}
*/
@PostConstruct
public void base() {
this.client = ClientBuilder.newClient();
this.service = this.client.target(this.getBaseUri());
}
/**
* close the connection before destroy
*/
@PreDestroy
protected void close() {
if (this.client != null) {
this.client.close();
}
}
/**
*
* @return get the basePath
*/
protected abstract String getBasePath();
/**
*
* @return get the baseUri
*/
protected abstract String getBaseUri();
/**
*
* @param paths
* the paths to get for the rest service
* @return {@link javax.ws.rs.client.Invocation.Builder}
*/
protected Builder getRequest(final String... paths) {
WebTarget serviceWithPath = this.getServiceWithPaths();
for (final String path : paths) {
serviceWithPath = serviceWithPath.path(path);
}
return serviceWithPath.request(MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON);
}
Метод, который я использую для получения ответа с идентификатором, я использую этот метод.
public Response getByID(final ID identifier) {
return this.getRequest(identifier.toString()).get();
}
Если вы протестируете любую прямую реализацию этого «базового клиента», вы также протестируете «базовый клиент». Я предлагаю использовать такие вещи, как Wiremock, для тестирования вашего клиента без необходимости запуска полного сервиса. Также не забудьте ВСЕГДА вызвать response.close() на ответ JAX-RS или вы будете утечки ресурсов (например, HTTP-соединения). –