Junit 如何正确实现attributeHasFieldErrors(没有';断言错误:没有属性的BindingResult:abc';错误)

Junit 如何正确实现attributeHasFieldErrors(没有';断言错误:没有属性的BindingResult:abc';错误),junit,spring-test,spring-boot-test,Junit,Spring Test,Spring Boot Test,我试图在单元测试中使用.andExpect(model().attributehasfielders 根据java.lang.AssertionError:由于被测试控制器返回的视图是重定向:“重定向:/xyz/add”,因此不会导致attribute:abc的BindingResult 但同时,大多数的@PostMapping(/…)都使用重定向。这是否意味着在这种情况下,无法知道属性hasfieldErrors 这似乎是可能的——在这方面它似乎起了作用——但我对此感到困惑: TestProc

我试图在单元测试中使用
.andExpect(model().attributehasfielders

根据java.lang.AssertionError:由于被测试控制器返回的视图是重定向:“重定向:/xyz/add”,因此不会导致attribute:abc的BindingResult

但同时,大多数的
@PostMapping(/…)
都使用重定向。这是否意味着在这种情况下,无法知道
属性hasfieldErrors

这似乎是可能的——在这方面它似乎起了作用——但我对此感到困惑:

TestProcessUpdateOwnerFormHaseErrors测试方法(上面链接底部的第二个方法)执行POST
[即mockMvc.perform(POST(…])
,并期望控制器类中的GET方法返回视图名

也就是说,
@GetMapping(“/owners/{ownerId}/edit”)
返回控制器中的
“owners/createOrUpdateOwnerForm”
@PostMapping(“/owners/{ownerId}/edit”)
返回控制器中的
“重定向:/owners/{ownerId}
。执行上述测试需要
“owners/createOrUpdateOwnerForm”
。它是否应该期望
“重定向:/owners/{ownerId}”

我很困惑


有人能解释一下实现
属性hasfieldErrors
的正确方法吗?

通常,在没有错误时使用重定向,以避免多次发布。当 如果出现错误,正常的方法是重新显示带有错误消息的同一视图

比如:

@PostMapping(“/”)
公共字符串processForm(@Valid UserForm UserForm,BindingResult BindingResult,Model Model){
如果(!bindingResult.hasErrors()){
Long id=service.saveUser(userForm.getUser());
返回“重定向:/user/”+id;
}否则{
返回“calcForm”;
}
}