EasyMock无效方法– ExpectLastCall()

时间:2020-02-23 14:41:19  来源:igfitidea点击:

有时我们想模拟void方法。
EasyMock的expect()方法不能用来模拟void方法。
但是,我们可以将expectLastCall()andAnswer()一起使用来模拟void方法。

EasyMock无效方法

当我们使用" expectLastCall()"和" andAnswer()"来模拟无效方法时,我们可以使用" getCurrentArguments()"来获取传递给该方法的参数并对其执行一些操作。
最后,由于要模拟void方法,因此必须返回null。

假设我们有一个实用程序类:

package com.theitroad.utils;

public class StringUtils {

	public void print(String s) {
		System.out.println(s);
	}
}

这是使用EasyMock模拟void方法print()的代码。

package com.theitroad.easymock;

import static org.easymock.EasyMock.*;

import org.junit.jupiter.api.Test;

import com.theitroad.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);
}
}

下图显示了执行上述JUnit测试时的控制台输出。

ExpectLastCall()。

Void()

如果我们只想模拟void方法而不想执行任何逻辑,则可以在对模拟对象调用void方法之后立即使用expectLastCall()。 andVoid()

您可以从我们的GitHub存储库中检出完整的项目和更多EasyMock示例。