简体   繁体   English

Mockito - 模拟 static 方法总是返回 null

[英]Mockito - mocked static method always returns null

Hi All i am trying to mock a static method.大家好,我正在尝试模拟 static 方法。 Below is my sample class looks like.下面是我的示例 class 的样子。

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

this is my test class code这是我的测试 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);
}

But unfortunately i am keep on getting response as Null.但不幸的是,我不断收到 Null 的响应。 Someone could help me.有人可以帮助我。

You must use the MockedStatic instance and a lambda for mocking static methods:对于 mocking static 方法,您必须使用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
    );
}

in your case it would be:在您的情况下,它将是:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM