首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mockMvc -测试错误消息

mockMvc -测试错误消息
EN

Stack Overflow用户
提问于 2014-08-13 14:31:13
回答 4查看 37.3K关注 0票数 38

有没有人有任何提示,或者有人知道我如何测试HTTP响应对象返回的“错误消息”?

代码语言:javascript
运行
复制
@Autowired
private WebApplicationContext ctx;

private MockMvc mockMvc;

@Before
public void setUp() throws Exception {
    mockMvc = MockMvcBuilders.webAppContextSetup(ctx).build();
}

响应:

代码语言:javascript
运行
复制
MockHttpServletResponse:
              Status = 200
       Error message = null
             Headers = {Content-Type=[application/json;charset=UTF-8]}
        Content type = application/json;charset=UTF-8
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-08-07 16:24:26

您可以使用status.reason()方法。

例如:

代码语言:javascript
运行
复制
     @Test
     public void loginWithBadCredentials() {
        this.mockMvc.perform(
                post("/rest/login")
                        .contentType(MediaType.APPLICATION_JSON)
                        .content("{\"username\": \"baduser\", \"password\": \"invalidPassword\"}")
                )
                .andDo(MockMvcResultHandlers.print())
                .andExpect(status().isUnauthorized())
                .andExpect(status().reason(containsString("Bad credentials")))
                .andExpect(unauthenticated());
    }


    MockHttpServletResponse:
                  Status = 401
           Error message = Authentication Failed: Bad credentials
            Content type = null
                    Body = 
           Forwarded URL = null
          Redirected URL = null
                 Cookies = []
票数 61
EN

Stack Overflow用户

发布于 2018-10-09 08:22:48

甚至更简单:

代码语言:javascript
运行
复制
String error =  mockMvc...
    .andExpect(status().isUnauthorized())
    .andReturn().getResolvedException().getMessage();

assertTrue(StringUtils.contains(error, "Bad credentials"));
票数 9
EN

Stack Overflow用户

发布于 2018-11-19 13:37:37

这是我使用JsonPath和MockMvc找到的解决方案

代码语言:javascript
运行
复制
this.mvc.perform(post(BASE_URL).contentType(MediaType.APPLICATION_JSON).content(responseJson)).andDo(print())
.andExpect(status().is5xxServerError())
.andExpect(jsonPath("$.message", is("There is an error while executing this test request ")));

希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25288930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档