這真的很少見,你會需要這個。因爲在大多數情況下,你只需要調用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