웹사이트 검색

EasyMock 무효 메서드 - expectLastCall()


때때로 우리는 void 메서드를 조롱하고 싶을 때가 있습니다. EasyMock expect() 메서드는 void 메서드를 조롱하는 데 사용할 수 없습니다. 그러나 andAnswer()와 함께 expectLastCall()을 사용하여 void 메서드를 모의할 수 있습니다.

EasyMock 무효 방법

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()를 사용할 수 있습니다.

GitHub 리포지토리에서 전체 프로젝트와 더 많은 EasyMock 예제를 확인할 수 있습니다.