今天学习做项目的时候第一次模仿别人使用@MockBean,让你不需要去访问数据库,也能模拟对用户进行鉴权的过程,加快测试的速度,但是使用的过程中发现我调用isAdmin方法总是返回false,找了很久,才知道原来用错了,我模拟的是没有参数的isAdmin(),但是调用了有参数的isAdmin(),因为我使用了@MockBean注解,又没有对有参的isAdmin进行模拟,所以一直返回false,在高人指点下才发现了问题,究其根本还是对于@MockBean完全不熟悉,只能是吸取教训了。
class ExecuteInfoServiceTest extends TestBase {
@MockBean
private UserService userService;
@MockBean
StpLogic stpLogic;
@BeforeEach
void setUp() {
User mockUser = new User();
mockUser.setId(XX);
// 模拟 getLoginUser 方法返回 mockUser
Mockito.when(userService.getLoginUser()).thenReturn(mockUser);
// 模拟isAdmin()返回true
Mockito.when(userService.isAdmin()).thenReturn(true);
}