有人可以告诉我为什么我在控制器中变空了。这是我的测试
public void updatePackage() throws Exception {
JSONObject updateObj = new JSONObject();
updateObj.append("packageType", "packageType-update-endpoint");
SPackage updatedResponse = null;
try {
String json = updateObj.toString();
System.out.println("**** JSON **** ");
System.out.println(json + "----------" + this.response.getId());
ResultActions result = mvcController.perform(put("/package/" + this.response.getId())
.content(json)
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk());
updatedResponse = JsonUtil.<SPackage>convertJsonToObject(
result.andReturn().getResponse().getContentAsString(), SPackage.class);
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception" + e);
}
}
这里是我的控制器方法
@RequestMapping(value = "/package/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public SPackage updatePackage(@PathVariable String id, @RequestBody JSONObject sPackage) {
if (sPackage == null) {
throw new BadRequestException("Given package is null");
}
return softwarePackageService.updatePackage(id,sPackage);
}
我正在使用Spring MVC Controller Mock
答案 0 :(得分:0)
尝试仅提供数据类型String
并尝试将其转换为服务器端的Json format
。
并希望能够奏效。
如此简单的解决方案是发送String
并转换为JSON
答案 1 :(得分:0)
我修改了代码如下。
ResultActions result = mvcController.perform(put("/package/" + this.response.getId())
.content(new ObjectMapper().writeValueAsString(updateObj.toString()))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk());
我需要对json对象执行.toString(),然后传递给ObjectMapper.writeValueAsString方法