Поток начинается с Controller.callMethod(). Он вызывает метод, который вызывает MyException. MyException обрабатывается обработчиком исключений написанного в контроллере:Как проверить предложение бросков в классе, который должен быть проверен с использованием Mockito
public class Controller{
public Response callMethod() throws MyException {
ClassToTest classToTest = new ClassToTest();
return(classToTest.method());
}
@ExceptionHandler(MyException.class)
public @ResponseBody
Response myException(HttpServletRequest req,
HttpServletResponse res, MyException myException) {
Response response = new Response();
response.setResponseCode(myException.getErrorCode());
return response;
}
}
public class ClassToTest {
public Response method() throws MyException {
Response response = anotherMethod();
return response;
}
public String anotherMethod(){
if(//something)
throw new MyException(Constant.ERROR_CODE); // I need to test this line
else
return //some response
}
}
}
Это мой тест класс:
public class Test {
@Test
public void testMethod(){
try{
ClassToTest classtotest = new ClassToTest();
Response response = classtotest.method(); //I want to get response after getting MyException (Response created by the myException ExceptionHandler)
assertEquals("SUCCESS", response.getResponseCode);
} catch(Exception e){
//After getting MyException the control comes here & thats the problem. assertEquals never get executed.
} }
}
Когда ответ линии Response = classtotest.method(); выполняется, тогда элемент управления переходит в блок кэша класса Test. Я хочу получить ответ, который создается с помощью myException ExceptionHandler &, чтобы проверить его код ответа. Может ли кто-нибудь сказать мне, как это сделать, используя Mockito?
Это не имеет смысла. Когда вы ожидаете, что ваш тестовый код выкинет исключение, вы не будете ** издеваться над этим. – GhostCat