我有一个方法
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();
}
}
}
我尝试测试throw异常,但它不起作用。我对于结果匹配器的状态()应该是什么感到困惑。
@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());
}
有没有关于处理restapi单元测试异常的文档? 谢谢
答案 0 :(得分:0)
@Autowired
private ActivityManagerService activityManager;
这会将实际的bean注入控制器而不是您创建的模拟。
在测试类中添加它。
@Autowired
private ControllerBean controller;
@Before
public void init(){
ReflectionTestUtils.setField(controller, "activityManager", activityManagerMock);
}
这会将MockObject设置为Controller的activityManager。 因此,在运行测试时,将调用模拟对象fetchData(),其中inturn抛出异常。