Spring MVC 单元测试 - 模拟服务方法未被调用

问题描述

我正在做一个 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 (将#修改为@)