我有一个这样的 Controller 方法:
@RequestMapping(value = "/{userId}/edit", method = RequestMethod.POST)
public ModelAndView updateUser(@PathVariable(USER_ID_PATH_VAR) final long userId, @Valid @ModelAttribute(MODEL_USER_WEB) final User user, BindingResult bindingResult,
final Principal principal, final Model model, @RequestParam(value = "otherLocation", required = false) Boolean isOnlyOneLocation) {
if (bindingResult.hasErrors()) {
return new ModelAndView(URL_EDIT_USER);
}
// do something ...
return new ModelAndView(URL_FINISH_USER);
}
我的测试是这样的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ManageUsersControllerTestConfig.class})
public class ManageUserControllerTest {
@Autowired
private ManageUserController userController;
@Autowired
private Model model;
private MockMvc mockMvc;
@Autowired
private BindingResult bindingResult;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".html");
mockMvc = MockMvcBuilders
.standaloneSetup(userController)
.setViewResolvers(viewResolver)
.build();
}
@Test
public void testUpdateInstitutionWithErrors() throws Exception {
when(bindingResult.hasErrors()).thenReturn(false);
mockMvc.perform(post(WebSecurityConfig.URL_USER_OVERVIEW + "/" + USER_ID + "/" + URL_PART_EDIT)
.param(USER_ID_PATH_VAR, USER_ID))
.andExpect(status().isOk())
.andDo(print());
}
}
我唯一想要的是模拟 bindingresult,
bindingResult.hasErrors()
方法应该返回false。每次我运行此测试时,该方法都会返回 true。任何建议如何解决此错误?
提前致谢
最佳答案
改用这个:
@MockBean
private BindingResult bindingResult;
关于spring - 如何在 Mockito 中/使用 Mockito 模拟 BindingResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911825/