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示例。

