Обработка исключения для модульного теста 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 выдает исключение.

Другие вопросы по тегам