2013-02-08 12 views
19

するメソッドのparamを確認します。その方法を確認する方法、Mockito。私はこの方法を持っているpaticularクラス

void putObject(<T extends BaseEntity> param) 

は、私はこの方法を模擬いくつかのテストを持っているが、私は疑問に思うが、特定のクラスのパラメータで呼び出されたのですか?このような方法でそれを実行しようとしました:

verify(foo).putObject((SomeClass)anyObject()); 
------ 
verify(foo).putObject(any(SomeClass.class)); 
------ 
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parametr); 

any()を持つ唯一の第二の変形作品が、それはt check class of parameter`をdoesnの。だから、そのメソッドが特定のクラスのオブジェクトを取得することを確認することが可能ならば?

答えて

44

ユーザマッチャーdocumentationisA()メソッド。あなたの問題を解決します

public static <T> T isA(java.lang.Class<T> clazz)

verify(foo).putObject(any(),isA(SomeClass.class));

+2

こんにちは。私は上記のコードを修正したいと思います。正しい呼び出しは次のとおりです。verify(foo).putObject(isA(SomeClass.class)); – nndru

1

実はあなたはArgumentCaptorに確認することができます。

ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parameterCaptor.capture()); 

SomeClass instance = parameterCaptor.getValue(); 
// check intance.getX() 
// check instance.getY() 
関連する問題