2017-03-24 19 views
1

私はクラスをテストしていて、特定のメソッドへの呼び出しを監視したい、つまり後で解析するために呼び出しパラメータを保存したいと考えました。EasyMock.captureで入力パラメータを取り込む方法は?

EasyMockでテストが行​​われるため、EasyMock.capture機能を使用することが理にかなっています。しかし、私は見つけることができた例が私のために動作しません - 私はキャプチャとラインで以下のコンパイルエラーを取得:

EasyMockで

期待(T)は(無効) 理由に適用することはできません。変数Tのインスタンスが存在しないので、voidがTに従うようになります。

誰かが私の間違いを指摘できれば素晴らしいと思います。以下はコードスニペットです:

import static org.easymock.EasyMock.capture; 

import org.easymock.Capture; 
import org.easymock.CaptureType; 
import org.easymock.EasyMock; 
import org.junit.Before; 

class B { 

} 

class A { 
    public void doSomething(B input) { 

    } 
} 

public class ATest { 
    private Capture<B> capturedData; 
    private A testObject; 

    @Before 
    private void setUp() { 
     capturedData = EasyMock.newCapture(CaptureType.ALL); 
     testObject = EasyMock.createNiceMock(A.class); 
     EasyMock 
       .expect(testObject.doSomething(capture(capturedData))) 
       .anyTimes(); 
    } 
} 

ありがとうございます!

答えて

1

あなたの問題をキャプチャするには、しかし、あなたのdoSomething()メソッドの戻り値の型とは関係ありません。

A.doSomething(B input)は、戻り値の型voidであるので、あなたは、このようにあなたが使用することはできません、方法は何かを返すように期待していませんそれのためにEasyMock.expect()。代わりに、単にメソッドを呼び出すとEasyMock.expectLastCall()を使用し、そのような:

testObject.doSomething(capture(capturedData)); 
EasyMock.expectLastCall().anyTimes(); 

EasyMock.expectLastCall()expectLastCall()を実行する前に、最後のメソッド呼び出しを期待することを宣言します。 expect()のように扱うことができます。 anyTimes()を追加します。

関連する問題