我想测试java-end的控制器,所以我需要一个来自web的params,这是对控制器的请求。但是我对map& json感到困惑,而且我制作的params是不能使用的。
关键代码:
public Object updateListLoggerUser(@RequestBody Map<String, Object> params, Model model, HttpServletRequest request)
throws IOException {
if (params.get("statusEvents") == null) {
model.addAttribute(ReturnMessage.STATUS, ReturnMessage.STATUS_NOT_OK);
model.addAttribute(ReturnMessage.ERROR_CODE, ReturnMessage.ERROR_CODE_MESSAGE.ERROR_CODE_500);
model.addAttribute(ReturnMessage.ERROR_MESSAGE, "No statusEvents parameter");
}
List<HOSStatusEvent> statusEvents = JSON.parseArray(JSON.toJSONString(params.get("statusEvents")),
HOSStatusEvent.class);//I need make a params whose key is "statusEvent"
UserSessionDto usDto = ControllerUtils.getCurrentClientAdminInfo(request);
hourOfServiceService.generateOneDayStatusEventForUser(usDto.getUserId(), statusEvents.get(0).getShortDate(),
statusEvents);
try {
hourOfServiceService.reCal(usDto.getUserId(), statusEvents.get(0).getShortDate(), 0);
} catch (Exception e) {
model.addAttribute(ReturnMessage.STATUS, ReturnMessage.STATUS_NOT_OK);
model.addAttribute(ReturnMessage.ERROR_CODE, ReturnMessage.ERROR_CODE_MESSAGE.ERROR_CODE_500);
model.addAttribute(ReturnMessage.ERROR_MESSAGE, ReturnMessage.ERROR_CODE_MESSAGE.ERROR_MESSAGE_500);
}
model.addAttribute(ReturnMessage.STATUS, ReturnMessage.STATUS_OK);
return model;
}
以及HOSStatusEvent模型的哪些字段包含:
private String userId;//"Jo"
private String devId;//"car123"
private Integer shortDate;//20160615
private Integer startTime;//1412
private Integer endTime;//1425
private Integer duration;//13
private String comments;//"some comments"
private String location;//"Hubei China"
private Integer status;//3
private Integer specialType;//1
我的参数不正确:
statusEvent=[{'userId': 'jo','shortDate': '20160615','startTime': '1400','endTime': '1406','duration': '6','status': '3', 'comments': 'testlistupdate','location': 'sz'},{'userId': 'jo','shortDate: '20160615','startTime': '1412','endTime': '1525','duration': '13','status': '3','comments': 'testsingleupdate','location': 'Hubei China'}]
这是我的相关测试代码(这部分仅显示我如何模拟参数):
params.put("statusEvents", "[{'userId':'jo','shortDate':'20160615','startTime':'1400','endTime':'1406','duration':'6','status': '3','comments':'testlistupdate','location':'sz'},{'userId':'jo','shortDate':'20160615','startTime':'1412','endTime':'1525','duration':'13','status':'3','comments':'testsingleupdate','location':'HubeiChina'}]");
//params.put("type", "S");
String content = JSON.toJSONString(params);
String contentType = "application/json";
String charset = "utf-8";
RequestEntity requestEntity = new StringRequestEntity(content, contentType, charset);
postMethod.setRequestEntity(requestEntity);
httpClient.getState().addCookies(cookies);
int status = httpClient.executeMethod(postMethod);
我使用Junit在本页的第一个块中测试函数updateListLoggerUser()。 但是当我调试它时,它将在此行中打印异常:
List<HOSStatusEvent> statusEvents = JSON.parseArray(JSON.toJSONString(params.get("statusEvents")),
HOSStatusEvent.class);