Статический метод обхода Мокито для тестирования
Мне нужно проверить метод handleIn () с помощью Mockito.
Однако код должен вызывать этот устаревший код Util.getContextPDO, который является статическим методом.
Обратите внимание, что в среде тестирования этот Util.getContextPDO всегда возвращает исключение, и я намерен обойти этот Util.getContextPDO (), всегда возвращая фиктивный IPDO.
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;
}
}
Первоначально я думал, что это достижимо с помощью spy () класса «MyClass», поэтому я могу высмеивать возвращаемое значение getIPDO (). Ниже приведены мои первые попытки использования spy ()
@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)));
}
Однакокогда (handler2.getIPDO ()) thenReturn (PDO). создает исключение, которого я хочу избежать (потому что handler2.getIPDO ()), похоже, вызывает реальный метод.
Любая идея о том, как проверить эту часть кода?