Mockito'nun fonksiyon argüman değerlerini yakalaması için hiç şansım yok! Bir arama motoru dizini ile dalga geçiyorum ve bir dizin oluşturmak yerine sadece bir karma kullanıyorum.
// 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))
Sorguların sonuçlarını (yani hangi belgeleri döndürdüklerini) test ettiğim için rastgele argümanlar kullanamıyorum. Aynı şekilde, her belge için belirli bir değer ve bir satır belirtmek istemiyorum!
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 Kullanma sayfasındaki geri aramalar bölümüne baktım . Ne yazık ki Java değil ve Java'da çalışmak için kendi yorumumu bulamadım.
DÜZENLEME (açıklama için): Mockito'nun bir X argümanını yakalayıp işlevime aktarmasını nasıl sağlayabilirim? X'in tam değerini (veya ref) işleve geçirilmesini istiyorum.
Tüm vakaları numaralandırmak istemiyorum ve keyfi argüman işe yaramayacak çünkü farklı sorgular için farklı sonuçlar test ediyorum.
Mockito sayfası diyor ki
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Bu java değil ve java'ya nasıl tercüme edeceğimi ya da olanı bir işleve nasıl geçireceğimi bilmiyorum.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
sizin için sahte nesneyi ayarlamalıdır. Aradığınızda ne olurreader.document(666)
?