java.lang.AssertionError:期望的状态:< 200>但是:< 400>在春季球衣控制器

时间:2017-02-16 12:13:07

标签: spring junit mockito

它是我的控制者......

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>"

1 个答案:

答案 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())
       ...