Обработка исключения для модульного теста RestAPI
У меня есть метод
public class ActivityManager {
private ActivityManager activityManager_;
@Autowired
public ActivityManager(ActivityManager activityManage)
{
activityManager_= activityManage;
}
@RequestMapping(value ="activityManager/", method = RequestMethod.GET)
public List<Data> getData() throws RestControllerException {
try {
return activityManage_.fetchData();
} catch (Exception ex) {
throw new RestControllerException();
}
}
}
И я попытался проверить исключение броска, но оно не работает. Я запутался в том, каким должен быть статус () для resultmatcher.
@Test(expected = RestControllerException.class)
public void getDataError() throws Exception {
ActivityManager activityManagerMock = Mockito.mock(ActivityManager
.class);
doThrow(RestControllerException.class).when(activityManagerMock).fetchData();
mockMvc_.perform(get("/activityManager")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isInternalServerError());
}
Есть ли какой-нибудь документ, который я могу прочитать больше об обработке исключений для повторного тестирования? Спасибо
1 ответ
@Autowired
private ActivityManagerService activityManager;
Это введет фактический компонент в контроллер, а не макет, который вы создали.
Добавьте это в свой тестовый класс.
@Autowired
private ControllerBean controller;
@Before
public void init(){
ReflectionTestUtils.setField(controller, "activityManager", activityManagerMock);
}
Это установит MockObject в ActivityManager из контроллера. И, следовательно, во время выполнения теста будут вызываться фиктивные объекты fetchData(), которые inturn выдает исключение.