Мне нужно написать простой http-клиент. Было бы здорово иметь модульные тесты для моего класса. Но я не знаю, как написать правильный и тестируемый класс.
Например, у меня есть такой клиент:
class HTTPClient
{
public:
HTTPCLient(const std::string& host, const std::string& port): session(host, port) {}
void send()
{
session.sendRequest(someRequest);
Response response = session.receiveResponse();
// ...
}
private:
SomeLibrary::ClientSession session;
};
Как проверить метод send
(что я действительно отправляю то, что хочу)? Я не могу издеваться над этим. Я могу написать, что HTTPClient
получает SomeLibrary::ClientSession
объект в конструкторе (в тесте я бы прошел mock), но хороший ли это дизайн? Я думаю, что способ реализации сеанса и т. д. должен быть скрыт в моем классе.
У тебя есть идеи?