如何获取javax.validation错误消息并在HTTP 400错误测试中检查此消息?

我在对象中使用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的参数中出现了一系列错误。有人可以帮助我吗?

iCMS 回答:如何获取javax.validation错误消息并在HTTP 400错误测试中检查此消息?

您可以使用andReturn()将返回消息分配给MvcResult,然后以String的形式获取响应。之后,您可以解析(我在这里使用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"))
本文链接:https://www.f2er.com/1624337.html

大家都在问