gpt4 book ai didi

spring-boot - 使用 String[] 作为请求主体的 Mockmvc 单元测试

转载 作者:行者123 更新时间:2023-12-05 03:07:59 24 4
gpt4 key购买 nike

我正在尝试为 PUT api 创建单元测试,如下所示,使用 String[] 作为请求主体。

@RequestMapping(value = "/test/id", method = RequestMethod.PUT)
public ResponseEntity<?> updateStatus(@RequestBody String[] IdList,.........){
}

我的测试如下所示

@Test
public void updateStatus() throws Exception {
when(serviceFactory.getService()).thenReturn(service);
mockMvc.perform(put(baseUrl + "/test/id)
.param("IdList",new String[]{"1"}))
.andExpect(status().isOk());

}

测试失败,出现以下异常:

java.lang.AssertionError: Status expected:<200> but was:<400>

从 mockmvc 传递字符串数组参数的最佳方式是什么?

最佳答案

您将 String[] 放入参数中。你应该把它放在 body 里。你可以这样说(我假设你使用的是 json。如果你使用 xml,你可以相应地改变它):

ObjectMapper mapper =  new ObjectMapper();
String requestJson = mapper.writeValueAsString(new String[]{"1"});
mockMvc.perform(put(baseUrl + "/test/id)
.contentType(MediaType.APPLICATION_JSON_UTF8).content(requestJson)
.andExpect(status().isOk())
.andExpect(jsonPath("$.[0]", is("1")));

jsonPathorg.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath

关于spring-boot - 使用 String[] 作为请求主体的 Mockmvc 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46306792/

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