Mockito旁路静态测试方法
我需要使用Mockito测试handErIn()方法。
但是,代码需要调用此遗留代码Util.getContextPDO,这是一个静态方法。
请注意,在测试环境中,此 Util.getContextPDO 始终返回 Exception,我打算通过始终返回虚拟 IPDO 来绕过此 Util.getContextPDO()。
public class MyClass {
public IPDO getIPDO()
{
return Util.getContextPDO(); // note that Util.getContextPDO() is a static, not mockable.
}
public String handleIn(Object input) throws Throwable
{
String result = "";
IPDO pdo = getIPDO();
// some important business logic.
return result;
}
}
最初,我认为这可以通过使用类“MyClass”的spy()来实现,所以我可以模拟getIPDO()的返回值。以下是我使用间谍的初步努力()
@Test
public void testHandleIn() throws Exception
{
IPDO pdo = new PDODummy();
MyClass handler = new MyClass ();
MyClass handler2 = spy(handler);
when(handler2.getIPDO()).thenReturn(pdo);
PDOUtil.setPDO(pdo, LogicalFieldEnum.P_TX_CTGY, "test123");
IPDO pdoNew = handler2.getIPDO();
Assert.assertEquals("test123,(PDOUtil.getValueAsString(pdoNew, LogicalFieldEnum.P_TX_CTGY)));
}
然而,when(handler2.getIPDO()).thenReturn(pdo);正在抛出我想要避免的异常(因为 handler2.getIPDO() )似乎调用了真正的方法。
关于如何测试这部分代码的任何想法?