Mockito を使用して handleIn() メソッドをテストする必要があります。
ただし、コードは静的メソッドであるこのレガシー コード Util.getContextPDO を呼び出す必要があります。
テスト環境では、この Util.getContextPDO は常に Exception を返すことに注意してください。この 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;
}
}
最初は、クラス「MyClass」のspy()を使用してこれを達成できると思っていたので、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)));
}
ただし、when(handler2.getIPDO()).thenReturn(pdo); 回避したい例外をスローしています( handler2.getIPDO() が実際のメソッドを呼び出しているようです)。
コードのこの部分をテストする方法について何か考えはありますか?