EasyMock.andVoid()
的javadoc读取如下
记录一个电话,但什么都不返回。用于链接对void方法的调用expectLastCall()。和Throw(e).andVoid()
返回:
此对象允许方法调用chaining.lockquote
你知道任何一个人需要这种情况吗?在上面的例子中andVoid()
的目的是什么?
让我们考虑一下:
myMock.myMethod();
expectLastCall().andVoid().andThrow(e)
myMethod
的返回类型为void
。然后我们可以省略'chain-element'andVoid
。
答案 0 :(得分:0)
related API docs是这样的:
记录一个电话,但什么都不返回。用于在void上链接调用 方法expectLastCall()。andThrow(e).andVoid()
重点是记录一个电话。稍后verify
来电可以检查此来电是否已经发生。
答案 1 :(得分:0)
你真的很少需要它。因为在大多数情况下,您只需要调用void方法来模拟它。喜欢这个
MyClass myMock = mock(MyClass.class);
myMock.myMethod();
replay(myMock);
myMock.myMethod(); // one call to myMethod expected
verify(myMock);
这是
的同义词MyClass myMock = mock(MyClass.class);
myMock.myMethod();
expectLastCall();
replay(myMock);
myMock.myMethod(); // one call to myMethod expected
verify(myMock);
然后假设您希望第一次调用myMethod
抛出异常而第二次调用正常,您可以这样做。
MyClass myMock = mock(MyClass.class);
myMock.myMethod();
expectLastCall().andThrow(new RuntimeException("test"));
expectLastCall().andVoid();
replay(myMock);
try {
myMock.myMethod(); // one call to myMethod will throw an exception
fail("should throw");
} catch(RuntimeException e) {}
myMock.myMethod(); // the other will be normal
verify(myMock);
或通过链接他们
MyClass myMock = mock(MyClass.class);
myMock.myMethod();
expectLastCall().andThrow(new RuntimeException("test")).andVoid();
replay(myMock);
try {
myMock.myMethod(); // one call to myMethod will throw an exception
fail("should throw");
} catch(RuntimeException e) {}
myMock.myMethod(); // the other will be normal
verify(myMock);
这个用例当然非常罕见,但我们仍然支持它。