在为Spring控制器编写单元测试时,最好是使用MockMvc,还是直接调用控制器函数?
答案 0 :(得分:1)
我更喜欢使用MockMvc,因为它正在测试我的Controller,即请求映射。
如果您直接致电控制器,则不会测试注释。
答案 1 :(得分:-1)
使用MockMvc进行测试对于单元测试控制器更好,因为如接受的答案所述,它将测试请求映射,而不仅仅是功能代码。 对于轻量级单元测试,最好在MockMvcBuilder中使用standAloneSetup Builder,这样就不需要加载Application Context。对于集成测试,我们可以使用webAppContextSetup(根据http://www.leveluplunch.com/java/tutorials/030-testing-spring-rest-webservice-controllers/)
示例代码(Mockito,jsonpath,杰克逊也是)
userService = mock(UserService.class);
userController = new UserController(userService);
mockMvc = MockMvcBuilders.standAloneSetup(userController);
// stub userService calls
LoginRequest body = new LoginRequest();
// set loginrequest fields
ObjectMapper mapper = new ObjectMapper();
mockMvc.perform(post("/login").content(mapper.writeValueAsString(loginRequest)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.userId").value("expected_value"));