gpt4 book ai didi

java - 如何对 Spring MVC 验证注释错误消息进行单元测试?

转载 作者:行者123 更新时间:2023-12-02 09:40:01 27 4
gpt4 key购买 nike

假设我有一个像这样的模型类:

public class User {
@NotEmpty(message = "Email is required")
private String email;
}

我希望能够对自定义错误消息“需要电子邮件”进行单元测试

到目前为止,我的单元测试代码可以工作,但不会检查错误消息。

@Test
public void should_respond_bad_request_with_errors_when_invalid() throws Exception
{
mock().perform(post("/registration/new"))
.andExpect(status().isBadRequest())
.andExpect(view().name("registration-form"))
.andExpect(model().attributeHasFieldErrors("user", "email"));
}

最佳答案

看来你不能。

但我建议您通过 attributeHasFieldErrorCode 方法解决此问题。

具有以下条件:

@NotNull(message="{field.notnull}")
@Size(min=3, max=3, message="{field.size}")
public String getId() {
return id;
}

我的测试方法中有以下内容(如果我的数据因最小或最大约束而失败,则它属于@Size注释)

.andExpect(model().attributeHasFieldErrorCode("persona", "id", is("Size")))

或与

.andExpect(model().attributeHasFieldErrorCode("persona", "id", "Size"))

该方法有两个版本,有和没有 Hamcrest

即使您使用 message = "Email is required" (原始/直接内容)并且我使用 message="{field.size}") key 从 .properties 文件中使用,我们的 message attribute content 实际上属于一种独特的注释。在您的情况下为 @NotNull,在我的情况下为 Size

因此,在某种程度上,消息是什么(原始消息或 key )并不重要,重要的是该消息的所有者(在本例中为注释)完成了其工作,并且已通过 进行了验证attributeHasFieldErrorCode 方法。

不要与类似的方法名称混淆:attributeHasFieldErrorsattributeHasFieldErrorCode

关于java - 如何对 Spring MVC 验证注释错误消息进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com