Mockitoに関数の引数値をキャプチャさせる運がありません!私は検索エンジンのインデックスをモックしていて、インデックスを作成する代わりに、ハッシュを使用しています。
// Fake index for solr
Hashmap<Integer,Document> fakeIndex;
// Add a document 666 to the fakeIndex
SolrIndexReader reader = Mockito.mock(SolrIndexReader.class);
// Give the reader access to the fake index
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
クエリの結果(つまり、クエリが返すドキュメント)をテストしているため、任意の引数を使用することはできません。同様に、ドキュメントごとに特定の値を指定したり、行を設定したりしたくありません。
Mockito.when(reader.document(0)).thenReturn(document(fakeIndex(0))
Mockito.when(reader.document(1)).thenReturn(document(fakeIndex(1))
....
Mockito.when(reader.document(n)).thenReturn(document(fakeIndex(n))
「Mockitoの使用」ページの「コールバック」セクションを見ました。残念ながら、それはJavaではなく、Javaで機能するように自分で解釈することはできませんでした。
編集(説明のため):Mockitoに引数Xをキャプチャさせて、それを関数に渡すにはどうすればよいですか?Xの正確な値(またはref)を関数に渡してほしい。
すべてのケースを列挙したくはありません。また、クエリごとに異なる結果をテストしているため、任意の引数は機能しません。
Mockitoページには
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
それはJavaではなく、Javaに変換する方法や、起こったことを関数に渡す方法がわかりません。
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
、モックオブジェクトが設定されます。電話をかけるとどうなりますreader.document(666)
か?