当ResponseBody收集时,MockMvc发布junit测试返回415

时间:2018-04-05 20:51:18

标签: java spring spring-mvc spring-boot mockmvc

我正在使用mockmvc进行休息服务集成测试。我有一个帖子休息服务,从postman调用它并获得200但当我用mockmvc调用它时,porform方法返回415不支持的媒体类型异常。

休息方法

@RequestMapping(value = "/users/test/{groupId}",
        method = RequestMethod.POST,
        produces=MediaType.APPLICATION_JSON_VALUE,
        consumes=MediaType.APPLICATION_JSON_VALUE)
private GenericResponse postTest(@PathVariable("groupId")String groupId,@RequestBody List<Contact> test, @RequestHeader("Authorization")String authorization) {
    return new GenericResponse();
}

测试方法

@Test
public void testPost() throws Exception {
    Contact contact = new Contact();
    contact.setName("contact1");
    contact.setMsisdn("901234567890");

    Contact contact2 = new Contact();
    contact2.setName("contact2");
    contact2.setMsisdn("901234567890");

    List<Contact> contactList = new ArrayList<>();
    contactList.add(contact);
    contactList.add(contact2);

    Gson gson = new Gson();
    String request = gson.toJson(contactList);

    MvcResult result = mvc.perform(
            post("/users/test/{groupId}","123")
                    .with(httpBasic(username,password))
                    .contentType(MediaType.APPLICATION_JSON_VALUE)
                    .accept(MediaType.APPLICATION_JSON_VALUE)
                    .content(request)
    )
            .andDo(print())
            .andExpect(status().isOk())
            .andReturn();

}

在RequestBody 200中使用String而不是List成功返回。我在requestbody中收集的错误是什么?我该如何解决?

1 个答案:

答案 0 :(得分:2)

我在控制器类中使用了@EnableWebMvc注释并成功运行。这将激活(以及其他)REST支持。我们需要这个来注册负责序列化的Jackson(JSON)转换器。 https://blog.zenika.com/2013/01/15/rest-web-services-testing-with-spring-mvc/

中有一个很好的解释