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”;
}
}