使用模拟来模拟我正在测试的类



假设我有一个名为UserController的控制器类,其中有两个方法:getUserCount((getLatestUser((,getUserCount调用getLatestUser。

@Controller
class UserController{
public long getUserCount(){
#code
getLatestUser();
#code
}
public User getLatestUser(){}
}

我应该使用Junit和Mockito测试这些方法中的每一种,因此我有了这样的东西:

class UserControllerTest{
@Autowired
UserController userController;
@Test
public void testing_get_user_count(){
User user = new User();
when(userController.getLastestUser()).thenReturn(user);
}
}

我的问题是,我不能模拟UserController,因为我已经自动连接了它,所以我不能在getLatestUser上使用when((.thenReturn((。

我有办法嘲笑它吗?

您可以使用@SpyBean而不是@Autowired。它将Mockito间谍应用于一颗豆子。

class UserControllerTest {
@SpyBean
UserController userController;
@Test
public void testing_get_user_count(){
User user = new User();
when(userController.getLastestUser()).thenReturn(user);
}
}

最新更新