2016-11-14 11 views
0

EasyMockでモックのメソッドを再実装する必要があります。このメソッドは、プリミティブ値を返すように定義されています。モックの再実装方法についてはプリミティブ型を返すメソッドの再実装

、EasyMockのユーザーガイドは、この方法をお勧めします。私はプリミティブ戻り値の型を使用する必要があるため

expect(l.remove(10)).andAnswer(new IAnswer<String>() { 
    public String answer() throws Throwable { 
     return getCurrentArguments()[0].toString(); 
    } 
    }); 

このアプローチは、私には適用されません。

ガイドでは、別の方法がandDelegateToです。私はそののいずれかを呼び出しますクラスではなく、インタフェース

  • andDelegateToを使用する場合、私は嘲笑タイプの匿名クラスを作成する必要がありますが、モック

    • :ので、私は、andDelegateToandAnswerアプローチを使用する必要はありませんコンストラクタは、私の場合のオプションではありません。
  • +1

    はラッパー型を使用してみてください:int型 - >整数、ブール - >ブールなど –

    +1

    'andAnswer'と' andDelegateTo'を同等です。後で型付きの解決が可能になります。そして、あなたがクラスを偵察したいと思っていると便利かもしれません。 – Henri

    +0

    @Henri andAnswerとandDelegateToは使用法の点で同等ではありません:http://stackoverflow.com/questions/40640742/easymock-andanswer-vs-anddelegateto有用なコメントがあります – joro

    答えて

    2

    には、例えば、プリミティブ型のラッパークラスを使用します。

    List listMock = EasyMock.createMock(List.class); 
    
    EasyMock.expect(listMock.isEmpty()).andAnswer(new IAnswer<Boolean>() { 
    
        @Override 
        public Boolean answer() throws Throwable { 
         return true; 
        } 
    }); 
    
    +1

    これは正しい答えです。すべてのプリミティブ型は 'IAnswer'でラップできます – Henri

    関連する問題