JMockit でメソッド内から呼び出しているメソッドのみをモックする
表記のとおりです。
例えば、以下のような methodA と methodB があった場合、junitテストで methodA を呼び出した時の methodB の振る舞いを変更したいということです。
※戻り値を 5 以外にしたい
public class PartialMock { public int methodA(int a) { int b = methodB(); return a + b; } public int methodB() { return 5; } }
JMockit ではパーシャルモックという機能が使えるようです。
(Partial Mock: 部分的なモック)
下記のように、Expectations の引数にインスタンスを渡して、振る舞いを変えたいメソッドを定義してあげます。
こうすることで、methodB の戻り値が 5 -> 10 に変わります。
@Test public void testMethodA_WithPartialMock() { final PartialMock partialMock = new PartialMock(); // changed behavior of methodB new Expectations(partialMock) {{ partialMock.methodB(); result = 10; }}; assertThat(partialMock.methodA(5), is(15)); }