有时,我们想要嘲笑VALID方法。EasyMockExpect()
方法不能用于模拟空方法。但是,我们可以结合使用expectLastCall()
和andAnswer()
来模拟void方法。
EasyMock空方法
当我们使用expectLastCall()
和andAnswer()
模拟void方法时,我们可以使用getCurrentArguments()
来获取传递给方法的参数,并对其执行一些操作。最后,我们必须返回NULL ,因为我们模拟的是一个空方法。假设我们有一个实用程序类,如下所示:
1package com.journaldev.utils;
2
3public class StringUtils {
4
5 public void print(String s) {
6 System.out.println(s);
7 }
8}
以下是使用EasyMock模拟空方法print()的代码。
1package com.journaldev.easymock;
2
3import static org.easymock.EasyMock.*;
4
5import org.junit.jupiter.api.Test;
6
7import com.journaldev.utils.StringUtils;
8
9public class EasyMockVoidMethodExample {
10
11 @Test
12 public void test() {
13 StringUtils mock = mock(StringUtils.class);
14
15 mock.print(anyString());
16 expectLastCall().andAnswer(() -> {
17 System.out.println("Mock Argument = "
18 +getCurrentArguments()[0]);
19 return null;
20 }).times(2);
21 replay(mock);
22
23 mock.print("Java");
24 mock.print("Python");
25 verify(mock);
26 }
27}
下图显示了执行上面的JUnit测试时的控制台输出。
expectLastCall().andVid()
如果我们只想模拟空方法,不想执行任何逻辑,那么在被模拟的对象上调用空方法后,就可以直接使用expectLastCall().andVid()
。
您可以从我们的giHub Repository.]签出完整的项目和更多EasyMock示例