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