它是我的控制者......
YourClass object=new Gson().fromjson(myStringThatLooksLikeJSON,YourClass.class);
它是我的testController ....
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/categories")
public POSResponse getAllCategories() {
String countryCode="1";
return infoService.getAllCategories(countryCode);
}
我正在使用泽西控制器。 当我调用该方法时,我得到错误消息" java.lang.AssertionError:预期状态:< 200>但是:< 400>"
答案 0 :(得分:1)
您是否可以在控制器中使用:
@Consumes(MediaType.APPLICATION_JSON) // instead of MediaType.APPLICATION_FORM_URLENCODED
或者,在你测试中:
mockMvc.perform(get("/categories")
.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE))
...
<强>为什么吗
HTTP请求应该是服务器接受的某种媒体类型,而MockMvc可能使用MediaType.APPLICATION_JSON(正如我的测试节目!)。您可以通过打印请求详细信息来检查它:
mockMvc.perform(get("/categories")
.contentType(MediaType.APPLICATION_FORM_URLENCODED))
.andDo(MockMvcResultHandlers.print())
...