Mockito-mocked静态方法总是返回null



嗨,我正在尝试模拟一个静态方法。下面是我的示例类。

public class UserHandler{
public User create(Request request)
User user = UserUtil.create(dbs, dba, jo, user);
return user;
} 

这是我的测试类代码

try(MockedStatic<UserUtil> mockedStatic = Mockito.mockStatic(UserUtil.class)) {
Mockito.when(UserUtil.create(mockDBS, mockAdmin, obj, user)).thenReturn(user);
User response = handler.create(mockZrequest);
assertEquals(res, response);
}

但不幸的是,我一直得到Null的响应。有人可以帮我。

必须使用MockedStatic实例和lambda来模拟静态方法:

try(MockedStatic<MyUtilsClass> mockedStatic = Mockito.mockStatic(MyUtilsClass.class)) {
// Use mockedStatic.when() for mocking, NOT Mockito.when(): 
mockedStatic.when(
// Use a lambda inside when(), NOT a direct method invocation:
() -> MyUtilsClass.myStaticMethod(param1, param2)
).thenReturn(
mockedReturnValue
);
}

在您的情况下,它将是:

try(MockedStatic<UserUtil> mockedStatic = Mockito.mockStatic(UserUtil.class)) {
mockedStatic.when(() -> UserUtil.create(mockDBS, mockAdmin, obj, user)).thenReturn(user);
// ...
}

最新更新