Статический метод обхода Мокито для тестирования

Мне нужно проверить метод 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 ()), похоже, вызывает реальный метод.

Любая идея о том, как проверить эту часть кода?

Ответы на вопрос(3)

Ваш ответ на вопрос