Я пишу серию тестов для класса с несколькими методами, такими как:Junit тест с autowired полого
public ServiceResponse getListOfGroups() {
ServiceResponse serviceResponse = new ServiceResponse();
try{
Slf4JStopWatch sw = new Slf4JStopWatch("GetListOfGroups", log, DEBUG_LEVEL);
List<Group> Groups = Arrays.asList(restTemplate.getForObject(getGroupServiceURL(), Group[].class));
sw.stop();
serviceResponse.setData(Groups);
} catch(ServiceException ex) {
serviceResponse.setErrorObject(ex.getErrorObject());
}
return serviceResponse;
}
Проблемой я имею то, что restTemplate
является @autowired
от фактической реализации класс (и, следовательно, возвращает нуль при вызове в перспективе модульного теста). Как я могу написать правильный тестовый пример для этих методов?
Вот что я пытался до сих пор:
@Test
public void testGetListOfGroups() {
//TODO
ServiceResponse resp = new ServiceResponse();
Mockito.when(uwsci.getListOfGroups()).thenReturn(resp); //uwsci is my mocked object
assertTrue(uwsci.getListOfGroups() == resp);
}
Я чувствую, что это побеждает точка модульного тестирования, как он только что вернулся, что я рассказал это и на самом деле не делать ничего другого.
Покажите нам, как autowired поля. Используете ли вы инъекцию полей, инъекцию конструктора или инъекцию сеттера? –
@JBNizet Используется полевая инъекция. '@Autowired \t частный RestTemplate restTemplate;' –