假设我有一个名为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);
}
}