Сегодня я столкнулся с очень сложной проблемой TDD. Мне нужно взаимодействовать с сервером через HTTP POST. Я нашел Apache Commons HttpClient, который делает то, что мне нужно.
Тем не менее, я получаю кучу взаимодействующих объектов от Apache Commons:
public void postMessage(String url, String message) throws Exception {
PostMethod post = new PostMethod(url);
RequestEntity entity = new StringRequestEntity(message,
"text/xml; charset=ISO-8859-1");
post.setRequestEntity(entity);
HttpClient httpclient = new HttpClient();
try {
int result = httpclient.executeMethod(post);
System.out.println("Response status code: " + result);
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
} finally {
post.releaseConnection();
}
}
У меня есть объект PostMethod
, объект RequestEntity
и объект HttpClient
. Я чувствую себя относительно комфортно, проходя инъекцию зависимостей HttpClient
, но что мне делать с другими соавторами?
Я мог бы создать несколько фабричных методов (или фабричный класс) для создания коллабораторов, но я немного боюсь, что я буду слишком издеваться.
Follow Up
Спасибо за ответы! Моя остающаяся проблема - метод как это:
public String postMessage(String url, String message) throws Exception {
PostMethod post = new PostMethod(url);
RequestEntity entity = new StringRequestEntity(message,
"text/xml; charset=ISO-8859-1");
post.setRequestEntity(entity);
HttpClient httpclient = new HttpClient();
httpclient.executeMethod(post);
return post.getResponseBodyAsString();
}
Как правильно проверить, что возвращаемое значение от post.getResponseBodyAsString()
? Должен ли я издеваться над post
, а также client
?