EasyMock Void メソッド - expectLastCall()
void メソッドをモックしたい場合があります。 EasyMock の expect()
メソッドは、void メソッドのモックには使用できません。ただし、expectLastCall()
を andAnswer()
と一緒に使用して、void メソッドをモックできます。
EasyMock void メソッド
expectLastCall()
と andAnswer()
を使用して void メソッドをモックする場合、getCurrentArguments()
を使用してメソッドに渡された引数を取得できます。そして、それに対して何らかのアクションを実行します。最後に、void メソッドをモックしているため、null を返す必要があります。次のようなユーティリティ クラスがあるとします。
package com.journaldev.utils;
public class StringUtils {
public void print(String s) {
System.out.println(s);
}
}
EasyMock を使用して void メソッド print() をモックするコードを次に示します。
package com.journaldev.easymock;
import static org.easymock.EasyMock.*;
import org.junit.jupiter.api.Test;
import com.journaldev.utils.StringUtils;
public class EasyMockVoidMethodExample {
@Test
public void test() {
StringUtils mock = mock(StringUtils.class);
mock.print(anyString());
expectLastCall().andAnswer(() -> {
System.out.println("Mock Argument = "
+getCurrentArguments()[0]);
return null;
}).times(2);
replay(mock);
mock.print("Java");
mock.print("Python");
verify(mock);
}
}

expectLastCall().andVoid()
void メソッドをモックしたいだけでロジックを実行したくない場合は、モックされたオブジェクトで void メソッドを呼び出した直後に expectLastCall().andVoid()
を使用できます。
完全なプロジェクトとその他の EasyMock の例を GitHub リポジトリからチェックアウトできます。