当我使用junit时,为什么params会通过函数?

时间:2016-06-15 07:09:27

标签: json junit

我想测试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);

0 个答案:

没有答案