ウェブサイト検索

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 リポジトリからチェックアウトできます。

関連記事: