Mockito - 模拟静态方法总是 returns null

Mockito - mocked static method always returns null

大家好我正在尝试模拟静态方法。下面是我的示例 class 的样子。

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

这是我的测试class代码

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);
    // ...
}