あなたがこれを必要とするのは本当にまれです。たいていの場合、あなたはそれを模擬するためにvoidメソッドを呼び出す必要があるだけです。
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();
replay(myMock);
myMock.myMethod(); // one call to myMethod expected
verify(myMock);
ように。
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