spring - 如何在 Mockito 中/使用 Mockito 模拟 BindingResult

标签 spring unit-testing spring-mvc mocking mockito

我有一个这样的 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/

相关文章:

java - spring-boot 2.0.6 速度 View 与资源加载器路径属性的问题

c++ - Visual Leak Detector 不适用于 VS2012 中的单元测试

swift - 使用 Swift : body of closure not executed 进行单元测试

unit-testing - 具有 Google Cloud API 依赖项的单元测试代码

spring - 重载发布请求映射

java - 如何使服务器端域模型可用于客户端 Web 浏览器?

spring - 来自 Spring Hateoas 的文档 HAL "_links"( Swagger )?

database - Spring JPA : Testing DAO layer with multiple databases in a CI environment

java - JUnit 测试 - 对模拟对象进行 Assets 或验证(或两者)?

java - 数据库持久化过程中的hibernate嵌套异常