我已经为控制器层方法编写了一个jUnit测试用例,并且由于预期结果不匹配而失败。 测试用例如下:
@Test
public void testGetNodeStatusCount() throws Exception {
ListNodes listNodes = new ListNodes();
// ArgumentCaptor<Integer> userId = ArgumentCaptor.forClass(Integer.class);
when(userManagementHelper.getNodeStatusCount(0)).thenReturn(
new ResponseEntity<ListNodes>(listNodes, new HttpHeaders(),
HttpStatus.OK));
mockMvc.perform(get("/usermgmt/nodestatus")).andExpect(status().isOk());
}
编写此测试用例的方法如下:
@RequestMapping(value = "/nodestatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<ListNodes> getNodeStatusCount(@RequestParam("userId") int userId) {
return userManagementHepler.getNodeStatusCount(userId);
}
我没有得到的是,如果状态设置为确定,而不是我获得400而不是200。
我对MockMVC测试“控制器”的新手还有一件事,所以请建议我学习这个的来源。
答案 0 :(得分:1)
您的控制器需要一个必需的请求参数,这就是您获得状态400(错误请求)
的原因您可以修改测试以包含此请求参数
mockMvc.perform(get("/usermgmt/nodestatus?userId=0")).andExpect(status().isOk());
或者您可以将请求参数设为可选
@RequestParam(value = "userId", required = false, defaultValue = "0")