2011-08-26 20 views
8

私はEasyMockを使って非常に単純な例を試していますが、単純に構築することはできません。EasyMock.expect()を使用している間、非常に簡単な例でコンパイルエラー?

The method expect(T) in the type EasyMock is not applicable for the arguments (void) 

誰かが正しい方向に私を指すことができます:私は次のエラーがEasyMock.expect(...ラインに入るしかし

@Test 
public void testSomething() 
{ 
    SomeInterface mock = EasyMock.createMock(SomeInterface.class); 
    SomeBase expected = new DerivesFromSomeBase(); 

    EasyMock.expect(mock.send(expected)); 
} 

:私は、次のテストケースを持っていますか?私は完全に失われています。

答えて

10

voidメソッドをテストする場合は、モックでテストするメソッドを呼び出します。その後、expectLastCall()メソッドを呼び出します。ここで

は例です:(リプレイ `後

@Test 
public void testSomething() 
{ 
    SomeInterface mock = EasyMock.createMock(SomeInterface.class); 
    SomeBase expected = new DerivesFromSomeBase(); 

    mock.send(expected); 

    EasyMock.expectLastCall().andAnswer(new IAnswer<Object>() { 
     public Object answer() { 
      // do additional assertions here 
      SomeBase arg1 = (SomeBase) EasyMock.getCurrentArguments()[0]; 

      // return null because of void 
      return null; 
     } 
    }); 
} 
+0

あなたの例はコンパイルされません。 'IAnswer'はジェネリックであり、テンプレートが必要です。 'IAnswer 'を使用する場合、 'answer()'メソッドのスコープ内で利用可能なメソッド 'getCurrentArguments()'はありません。私は間違って何をしていますか? –

+0

@bjarkefあなたはそれが 'EasyMock.getCurrentArguments()'でなければなりません。私はそれが欠落していたことに気付かなかったので、静的なインポートを持っていた。 – Jasper

8

あなたのsend()メソッドはvoidを返し、ただ期待値とリプレイでモックメソッドを呼び出すので:

SomeInterface mock = EasyMock.createMock(SomeInterface.class); 
SomeBase expected = new DerivesFromSomeBase(); 
mock.send(expected); 
replay(mock); 
+0

)'私は、実際に 'mock.sendは()'発生する原因となるアクションを実行すると予想しています。そして、EasyMockは、テスト中のクラスから同じパラメータで期待される同じコールが実行されると主張します。 –

+0

はい、正しい@bjarkefです。 –

0

インターフェイスをからかっているので、この方法をからかっで唯一の目的は返すようになりますその方法の結果。この場合、あなたの 'send'メソッドの戻り値の型は無効です。 'EasyMock.expect'メソッドは一般的なもので、戻り値の型を期待しています。これは、戻り値の型がないためにvoidメソッドを使用できないことをコンパイラに伝えています。

詳細については、http://easymock.org/api/easymock/3.0/index.htmlのEasyMock APIドキュメントを参照してください。

0

このようにしてvoid戻り値を持つメソッドをスクリプト化することはできません。 this questionをチェックして、expectedオブジェクトのsendメソッドの動作をどうやって模擬することができるかについての良い答えを確認してください。

関連する問題