问题描述
我有一个带有POST方法且带有@RestController批注的控制器类
@RequestMapping(value="/test",method = RequestMethod.POST,produces ="application/json")
public Response updateDetails(@RequestBOdy Request request) throws ServiceException{
try{
//Service call for db connection
response = service.updateDetails(request);
}catch(IOException s){s.printstacktrace();}
catch(InterruptedException e){e.printstacktrace();}
return response;
}
Junit测试类是
@Test
public void test() {
Request request = new Request();
request.setId("session");
Response response = new Response();
respoonse.setStatus("200");
response.setMessage("");
try{
Service service = Mockito.mock(Service.class);
//mock values to call catch block
**when(service.updateDetails(any())).thenThrow(new IOException());
when(controller.updateDetails(any()).thenThrow(new ServiceException());**
RequestBuilder requestBuilder = mockmvcRequestBuilders.post("/test").accept(MediaType.APPLICATION_JSON).content(request).contentType(MediaType.APPLICATION_JSON);
try{
MvcResult result = mvc.perform(requestBuilder).andReturn();
assertNotNull(result);
}catch(Exception e){e.printstacktrace();}
catch(IOException e){e.printstacktrace();}
catch(InterruptedException e){e.printstacktrace();}
}
}
使用上述控制器和测试用例,我试图覆盖catch块,但是调用根本没有到达catch块。我在测试用例中为控制器类添加了@MockBean。
我只为服务类做了一些数据库更新语句。因此,我没有包括那部分,只是因为我嘲笑了这些值。
请帮助我对控制器类中的块进行代码覆盖。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)