gpt4 book ai didi

java - 如何使用 MockMVC 测试 Spring Rest 中的 Map 参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:03 24 4
gpt4 key购买 nike

Spring Rest 中,我有一个 RestController 公开此方法:

@RestController
@RequestMapping("/controllerPath")
public class MyController{
@RequestMapping(method = RequestMethod.POST)
public void create(@RequestParameter("myParam") Map<String, String> myMap) {
//do something
}
}

我想测试这个方法,使用 MockMVC来自 Spring:

// Initialize the map
Map<String, String> myMap = init();

// JSONify the map
ObjectMapper mapper = new ObjectMapper();
String jsonMap = mapper.writeValueAsString(myMap);

// Perform the REST call
mockMvc.perform(post("/controllerPath")
.param("myParam", jsonMap)
.andExpect(status().isOk());

问题是我收到了 500 HTTP 错误代码。我很确定这是因为我使用 Map 作为我的 Controller 的参数(我尝试将其更改为 String 并且它有效)。

问题是:我怎样才能在我的 RestController 中有一个 Map 参数,并使用 MockMVC 正确测试它?

感谢您的帮助。

最佳答案

我知道这是一篇旧帖子,但我遇到了同样的问题,最后我按如下方式解决了它:

我的 Controller 是(检查 RequestParam 是否没有名称):

@GetMapping
public ResponseEntity findUsers (@RequestParam final Map<String, String> parameters) {
//controller code
}

在我的单元测试中我做了:

MultiValueMap<String, String> parameters = new LinkedMultiValueMap<>();
parameters.put("name", Collections.singletonList("test"));
parameters.put("enabled", Collections.singletonList("true"));

final MvcResult result = mvc.perform(get("/users/")
.params(parameters)
.contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(status().isOk())
.andReturn();

关于java - 如何使用 MockMVC 测试 Spring Rest 中的 Map 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32885780/

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