这真的很少见,你会需要这个。因为在大多数情况下,你只需要调用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);
这个用例当然是超级罕见的,但我们仍然支持它。
只是一个小小的评论:而不是'expectLastCall()。andVoid();'人们可以写'myMock.myMethod();'。因此,'.andVoid()'的使用不一定需要。 – Chris311
@ Chris311是的。我知道。它更多的是为了完成。如果你喜欢链接期望。 – Henri