用Mockito模拟静态字段

时间:2014-10-09 09:18:53

标签: java unit-testing mocking mockito

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

ClassA.conn1.getObjectA().getIntValue()

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

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

我尝试了一些东西PowerMockito,WhiteBox,但没有成功。现在我已经完成了这个,但是我得到了相同的NullPointerException

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

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

1 个答案:

答案 0 :(得分:2)

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;