Я пытаюсь проверить метод ниже с Mockito и Junit:
@Transactional
@RequestMapping(method=RequestMethod.PUT,value ="/updateEmployer/{empId}")
public @ResponseBody Object updateEmployer(@PathVariable Integer empId,) throws Exception {
Employee e = EmployeeRepository.findOne(empId);
for (Department de : e.getDepartement()){
de.setDepartmentName(e.getName + "_" + de.getName());
}
EmployeeRepository..saveAndFlush(e);
return null;
}
Это метод Test:
@Test // throw java.lang.NullPointerException
public void updateEmployeeFailureTest() throws Exception {
mockMvc.perform(
MockMvcRequestBuilders
.put("/updateEmployer/{empId}",18)
.accept(MediaType.APPLICATION_JSON)).andDo(print())
.andExpect(MockMvcResultMatchers.view().name("errorPage"))
.andExpect(MockMvcResultMatchers.model().attributeExists("exception"))
.andExpect(MockMvcResultMatchers.forwardedUrl("/WEB-INF/jsp/errorPage.jsp"))
.andExpect(MockMvcResultMatchers.status().isInternalServerError());
}
Стек печати:
MockHttpServletRequest:
HTTP Method = PUT
Request URI = /updateEmployer/18
Parameters = {}
Headers = {Content-Type=[application/json], Accept= application/json]}
Handler:
Type = com.controllers.employeeController
Method = public java.lang.Object com.controllers.employeeController.updateEmployer(java.lang.Integer) throws java.lang.Exception
Async:
Was async started = false
Async result = null
Resolved Exception:
***Type = java.lang.NullPointerException***
ModelAndView:
View name = errorPage
View = null
Attribute = exception
***value = java.lang.NullPointerException***
FlashMap:
MockHttpServletResponse:
Status = 500
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = /WEB-INF/jsp/errorPage.jsp
Redirected URL = null
Cookies = []
Это работает, но когда я пытаюсь поймать текст или исключение, созданное этим методом,
добавляя @Test (ожидаемый = java.lang.NullPointerException.class), у меня возникает эта ошибка:
java.lang.AssertionError: Ожидаемое исключение: java.lang.NullPointerException
когда я пытаюсь получить текст nullPointerException как значение атрибута (исключения) раздела ModelAndView, я получаю эту ошибку:
java.lang.AssertionError: Ожидалось исключение атрибута модели: java.lang.NullPointerException, но было: java.lang.NullPointerException
Есть ли способ ожидать возникновения исключения или текста в атрибуте значения ( value = java.lang.NullPointerException) или текста в разделе разрешенного исключения с использованием mockito (mockmvc)?
Любая помощь будет высоко ценится