【问题标题】:Mocking static fields with Mockito使用 Mockito 模拟静态字段
【发布时间】:2014-10-09 09:18:52
【问题描述】:

我有这样的东西(它是第三方库,所以我必须使用这个设计):

ClassA.conn1.getObjectA().getIntValue()

ClassA 是一个普通的类,里面有一个公共静态字段(conn1)。这个 conn1 是一个类,它有一个连接和一些在应用程序中使用的其他值(在我的例子中是 ObjectA)。

这个值在我模拟的 dao 中作为参数传递。该值被嘲笑为 Matchers.anyInt() 但我得到 NullPointerException 因为 conn1 为空(不是预期的 int)

我尝试了一些 PowerMockito,WhiteBox,但没有成功。现在我已经这样做了,但我得到了相同的 NullPointerException

Mockito.when(ClassA.conn1.getObjectA()).thenReturn(new ObjectA(2));

问题是,我如何模拟它以获取 ObjectA 或 ObjectA 的 int 值

【问题讨论】:

    标签: java unit-testing mocking mockito


    【解决方案1】:
    import static x.y.z.Mockito.*;
    
    ObjectA objectA = mock(ObjectA.class);
    when(objectA.getIntValue()).thenReturn(1));
    
    Conn conn1 = mock(Conn.class);
    when(conn1.getObjectA()).thenReturn(objectA);
    
    ClassA.conn1 = conn1;
    

    【讨论】:

    • 关于最后一行,conn1和objectA是不同的对象(其实objectA是conn1的一个字段),所以这样不行
    猜你喜欢
    • 2015-08-22
    • 2014-08-30
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多