如何获取javax.validation错误消息并在HTTP400错误测试中检查这些消息?

cclgggtu  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(347)

我在我的对象和注解中使用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的参数中的一系列错误。有人能帮我吗?

anhgbhbe

anhgbhbe1#

您可以使用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"))

相关问题