У меня проблема с попыткой сделать несколько автоматических тестов: у меня есть сервис (весна).Этот сервис предоставляет публичный метод, используемый для процесса.Этот процесс состоит из 3 основных процессов.Эти процессы находятся в закрытых методах и вызывают некоторые другие службы.
Я хочу проверить поведение, когда один из этих 3 частных процессов выдает ошибку.Я понял, что Мокито может помочь мне.Однако я не могу заставить это работать.Поскольку мои три метода являются частными, и я не могу использовать PowerMock, я попытался использовать when (). ThenThrow для открытых методов в другом сервисе, который вызывается моим закрытым методом.
Я получил различные результаты,NullPointerException, процесс, работающий без бросков / ошибок, проблем с зависимостями и т. Д.
Мой код выглядит следующим образом:
@Test
public void test() throws Throwable {
Mockito.when(SecondServiceCalledByPrivateMethod.publicMethod(Mockito.any(), Mockito.any()))
.thenThrow(new Exception("failed!!!"));
request lRequest = createRequest(myObjects);
FirstService.executeProcess(lRequest);
}
С классом конфигурации:
@Configuration
public class ConfigClass{
@Bean
@Primary
public SecondService secondService() {
return Mockito.mock(SecondService.class);
}
}
Внутренние службы, У меня есть несколько @Autowired и т. Д. Я не знаю, если это имеет значение.Это первый раз, когда я пытаюсь использовать Mockito.Есть ли у вас какие-либо идеи, как заставить это работать или что мне не хватает?
РЕДАКТИРОВАТЬ: мой сервис выглядит следующим образом:
@Service
class MyService {
@Autowired OtherService dependentService;
public someObject serviceMethod(Object2) {
//Some actions
callProcess(Object2);
}
private void callProcess(Object2) {
// other actions
dependentService.process(Object3);
}
}
Он имеет несколько вызовов других служб (@Autowired).Нужно ли им издеваться / шпионить за ними в тесте?