问题描述
我正在做一个 spring boot 项目,我有一个控制器,它调用一个服务方法并处理输出。
我正在使用 spring MockMvc 来测试 web 层。在我的测试类中,我使用 Mockito.when() 模拟了服务方法。但是当我调用相应的处理程序方法时,它不会调用模拟的服务方法,而是返回空响应。
控制器
"a"
测试类
@Controller
public class SocialLoginEndpoints {
@Autowired
@Qualifier("facebookAuth")
SocialLogin faceBookAuth;
@Autowired
@Qualifier("googleAuth")
SocialLogin googleAuth;
@Autowired SignupService signupService;
@GetMapping("/auth/google")
public String googleAuth(@RequestParam String signupType,HttpServletRequest request) {
return "redirect:" + googleAuth.getAuthURL(request,signupType);
}
}
返回的响应是
@WebMvcTest(SocialLoginEndpoints.class)
class SocialLoginEndpointsTest {
@Autowired MockMvc mockMvc;
MockHttpServletRequest mockHttpServletRequest;
@MockBean GoogleAuth googleAuth;
@MockBean FacebookAuth facebokAuth;
@MockBean SignupService signupService;
@BeforeEach
void setUp() {
mockHttpServletRequest = new MockHttpServletRequest();
}
@Test
void googleAuth() throws Exception {
Mockito.when(googleAuth.getAuthURL(mockHttpServletRequest,"free"))
.thenReturn("www.google.com");
mockMvc
.perform(MockMvcRequestBuilders.get("/auth/google").param("signupType","free"))
.andExpect(MockMvcResultMatchers.redirectedUrl("www.google.com"))
.andExpect(MockMvcResultMatchers.status().isFound())
.andDo(MockMvcResultHandlers.print());
Mockito.verify(googleAuth,Mockito.times(1)).getAuthURL(mockHttpServletRequest,"free");
}
请帮我解决这个问题。 提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)