Nie mam szczęścia, aby Mockito przechwytywał wartości argumentów funkcji! Kpię z indeksu wyszukiwarki i zamiast budować indeks, używam tylko skrótu.
// 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))
Nie mogę używać dowolnych argumentów, ponieważ testuję wyniki zapytań (tj. Które dokumenty zwracają). Podobnie nie chcę określać konkretnej wartości i mieć wiersz dla każdego dokumentu!
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))
Przejrzałem sekcję wywołań zwrotnych na stronie Korzystanie z Mockito . Niestety, to nie jest Java i nie mogłem uzyskać własnej interpretacji tego do pracy w Javie.
EDYCJA (dla wyjaśnienia): Jak zmusić Mockito do przechwycenia argumentu X i przekazania go do mojej funkcji? Chcę dokładnej wartości (lub ref) X przekazanej do funkcji.
Nie chcę wyliczać wszystkich przypadków, a dowolny argument nie zadziała, ponieważ testuję różne wyniki dla różnych zapytań.
Mówi strona Mockito
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
To nie jest java i nie wiem, jak przetłumaczyć na język java ani przekazać tego, co się stało, do funkcji.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
powinno ustawić dla ciebie obiekt pozorowany. Co się dzieje, kiedy dzwoniszreader.document(666)
?