2017-10-05 25 views
1

EasyMock.andVoid()のjavadocEasyMock.andVoid()の目的は何ですか?

を次のようにのを読んで、通話を記録したが何も返しません。 。空のメソッドexpectLastCall()andThrow(e)の.andVoid()

戻りにチェーンコールするために使用:

このオブジェクトのメソッド呼び出しchaining.lockquote

できるようにする、あなたはいずれかを知っていますか誰かがこれを必要とする可能性のある状況?上記の例でandVoid()の目的は何ですか?

myMock.myMethod(); 
expectLastCall().andVoid().andThrow(e) 

myMethodは、戻り値の型voidを有する:

は、私たちが考えてみましょう。次に、「チェーン要素」andVoidを省略することができます。

答えて

0

あなたがこれを必要とするのは本当にまれです。たいていの場合、あなたはそれを模擬するために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); 

によるこのユースケースはもちろん、超稀であるが、我々はまだそれをサポートしています。

+0

ほんの少しのコメント: 'expectLastCall()。andVoid();」の代わりに「myMock.myMethod();」と書くだけです。したがって、 '。andVoid()'の使用は必ずしも必要ではありません。 – Chris311

+0

@ Chris311はい。知っている。それはもっと完成したものです。そしてあなたが連鎖の期待を愛するならば。 – Henri

0

related API docsはこのように書きます:

は、通話を記録したが何も返しません。空 方法expectLastCall()。andThrow(e)の.andVoid()

にチェーンコールに使用されるポイントは、コールを記録することです。後でverifyコールでこのコールが行われたかどうかを確認できます。

関連する問題