Mockitoでprivateなフィールドをモック化する方法
以下のようにprivateなフィールドをモック化する場合、リフレクションを使うと出来るのだが、Mockitoにはそのリフレクションを簡単に使えるWhiteboxというユーティリティクラスがある。
public class MyClass { private final MyField field = new MyField(); public void methodA() { field.methodB(); } }
Whiteboxクラスの使い方は以下(MyFieldクラスをモック化し、メソッドが呼ばれている事を検証する例)。
public class MyClassTest { MyClass sut; @Before public void setUp() throws Exception { sut = new MyClass(); Whitebox.setInternalState(sut, "field", mock(MyField.class)); } @Test public void testMethodA() { sut.methodA(); verify((MyField)Whitebox.getInternalState(sut, "field")).methodB(); } }