【问题标题】:How to get javax.validation errors messages and check this messages on HTTP 400 error test?如何获取 javax.validation 错误消息并在 HTTP 400 错误测试中检查此消息?
【发布时间】:2020-09-04 11:02:42
【问题描述】:

我在我的对象中使用 javax.validation,在我的注释中我有这样的错误消息:

@NotNull(message = "This name can't be a null parameter")
private String name;

当我在端点上使用 @Valid 时,java 将检查我的验证并返回错误 400,其中包含错误列表。在我的集成测试中,我检查了这样的错误:

@Test
public void saveUser() throws Exception{
    User user = builder.newUser();

    getMockMvc().perform(post(URL_USER)
        .contentType(TestUtil.APPLICATION_JSON_UTF8)
        .content(TestUtil.convertObjectToJsonBytes(user)))
        .andExpect(status().isBadRequest());
        
}

但是这个测试是不完整的,因为我不检查错误消息。我需要一种方法来检查我的消息“此名称不能是空参数”。我知道......我认为这条消息出现在一个名为 defaultMessage 的参数中的一系列错误中。有人可以帮助我吗?

【问题讨论】:

    标签: java spring-boot testing integration-testing javax.validation


    【解决方案1】:

    您可以使用 andReturn() 将返回消息分配给 MvcResult,然后您可以获得字符串形式的响应。之后,您可以解析(我在这里使用 org.json)这个返回字符串并获取错误消息。

    final MvcResult mvcResult = getMockMvc().perform(post(URL_USER)
            .contentType(TestUtil.APPLICATION_JSON_UTF8)
            .content(TestUtil.convertObjectToJsonBytes(user)))
            .andExpect(status().isBadRequest())
            .andReturn();
    
    final String resultString = mvcResult.getResponse().getContentAsString();
    
    final JSONObject jsonObject = new JSONObject(resultString);
    System.out.println(jsonObject.get("message"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多