РЕЗЮМЕ: У меня есть автономный класс для выполнения прокси-входа в систему и последующего заполнения объекта HttpServletResponse содержимым аутентификации, которое может использовать браузер.Когда я тестирую свой код, как я могу предоставить имитируемые сервисы в классе, в котором нет сеттеров?
ПОДРОБНОСТИ: Я серьезно отредактировал свой прокси-код входа в систему в этом фрагменте.
- Запрашивает у сервера форму для входа.
- Отправляет учетные данные.
- Получает одобрение сервера и передает его браузеру (ответ).
Урезанный код выглядит следующим образом:
private static final Log log = LogFactory.getLog(MyClass.class);
@Inject()
private UserService userService;
public void performProxyLogin(HttpServletResponse response,
UserDTO userDTO, String url) {
String username = getUsername(userDTO);
String password = getPasswordFromUserService(username);
// MyRequest only has data, organizing a Http Request.
MyRequest myRequest = prepareInitialGetRequest(url);
// processURLRequest() encapsulates use of HttpURLConnection.
// MyResponse only has data, organizing a Http Response.
MyResponse myResponse = processURLRequest(myRequest);
myRequest = prepareLoginRequest(myResponse, username, password);
myResponse = processURLRequest(myRequest);
// Transfer data into the response, and from there into the browser.
fillResponseWithProxiedResult(response, myResponse)
}
Чтобы сделать эту работу, я думаю, мне нужно ввести поддельный журнал или LogFactory, поддельный UserService и способполучение поддельного HttpURLConnection.
Однако все советы, которые я видел, касаются кода с установщиками, который набор тестов может использовать для подключения поддельных объектов.
Как предоставить свой классего нужны издевательские объекты?