gpt4 book ai didi

java - spring mvc Junit 使用mockito作为post方法

转载 作者:行者123 更新时间:2023-12-02 05:50:23 24 4
gpt4 key购买 nike

我正在使用下面的 spring mvc junit 测试用例。但每次我都会收到错误消息

java.lang.AssertionError:未设置内容类型

@Test
public void testAddNewPermission() throws Exception {

String response = "{" + "\"response\":{"
+ "\"message\": \"Addded new permission\","
+ "\"status\": \"success\"}" + "}";

when(userManagementHelper.addNewPermission("user", "NodeManagemnt"))
.thenReturn(
new ResponseEntity<String>(response, new HttpHeaders(),
HttpStatus.OK));
mockMvc.perform(
post("/usermgmt/addNewPermission").param("username", "user")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(
content().contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(jsonPath("$.response.['status']", is("success")));
}

请帮忙解决。

添加 Controller 代码。

 @RequestMapping(value = "/addNewPermission", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
ResponseEntity<String> addNewPermission(
@RequestParam("username") String userName, String permissionName) {
return userManagementHepler.addNewPermission(userName, permissionName);
}

最佳答案

此处编写 Controller 代码的方式存在一些问题,修复这些问题应该可以使您的代码正常工作:

.1。您在此处显式返回 ResponseEntity,这意味着您不必使用 @ResponseBody 注释您的响应。 ResponseEntity 已经封装了此行为。

.2。您的方法没有接受 JSON,它只是接受表单帖子,但您说 Content-Type 是 json,但事实并非如此。由于您期望得到 json 响应,因此您应该将 Accept header 设置为 json,并完全删除 Content-Type

我认为更改这些应该可以修复您的测试。

关于java - spring mvc Junit 使用mockito作为post方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591481/

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