gpt4 book ai didi

java - 当 ResponseBody 有集合时,MockMvc post junit 测试返回 415

转载 作者:行者123 更新时间:2023-12-05 01:43:19 28 4
gpt4 key购买 nike

我正在使用 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 中使用 String 而不是 List 时,返回 200 成功。我在 requestbody 中收集的错误是什么,我该如何解决?

最佳答案

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

关于java - 当 ResponseBody 有集合时,MockMvc post junit 测试返回 415,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49681323/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com