如何使用MockMvc检查响应主体中的字符串

我有简单的集成测试

@Test

public void shouldReturnErrorMessageToAdminWhenCreatingUserWithUsedUserName() throws Exception {

mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON)

.content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}"))

.andDo(print())

.andExpect(status().isBadRequest())

.andExpect(?);

}

在最后一行中,我想将响应正文中收到的字符串与预期字符串进行比较

作为回应,我得到:

MockHttpServletResponse:

Status = 400

Error message = null

Headers = {Content-Type=[application/json]}

Content type = application/json

Body = "Username already taken"

Forwarded URL = null

Redirected URL = null

使用content(),body()尝试了一些技巧,但没有任何效果。

回答:

你可以调用andReturn()并使用返回的MvcResult对象以获取内容String

见下文:

MvcResult result = mockMvc.perform(post("/api/users").header("Authorization", base64ForTestUser).contentType(MediaType.APPLICATION_JSON)

.content("{\"userName\":\"testUserDetails\",\"firstName\":\"xxx\",\"lastName\":\"xxx\",\"password\":\"xxx\"}"))

.andDo(MockMvcResultHandlers.print())

.andExpect(status().isBadRequest())

.andReturn();

String content = result.getResponse().getContentAsString();

// do what you will

以上是 如何使用MockMvc检查响应主体中的字符串 的全部内容, 来源链接: utcz.com/qa/429135.html

回到顶部