Nie mam żadnego szczęścia, aby Mockito przechwycił wartości argumentów funkcji! Kpimy z indeksu wyszukiwarki i zamiast budować indeks, używam tylko hasha.wywołania zwrotne i uzyskiwanie wartości argumentów
// 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ć linię 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))
Spojrzałem na sekcję oddzwonień na stronie Using Mockito. Niestety nie jest to Java i nie mogłem uzyskać własnej interpretacji tego do pracy w Javie.
EDYCJA (dla wyjaśnienia): Jak mogę zmusić Mockito do przechwycenia argumentu X i przekazania go do mojej funkcji? Chcę dokładną wartość (lub ref) X przekazane do funkcji.
Nie chcę wyliczać wszystkich przypadków, a dowolny argument nie zadziała, ponieważ testuję różne wyniki dla różnych zapytań.
Mockito strona mówi
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
to nie jawa, a ja nie wiem jak to przetłumaczyć na Java lub przekazać cokolwiek się do funkcji.
Nie jestem pewien, czy dokładnie rozumiem, co się u Ciebie nie udaje. Wezwanie do 'Mockito.when (read.document (666)). ThenReturn (document (fakeIndex (666))' powinien ustawić dla ciebie obiekt próbny Co stanie się, kiedy wywołasz 'reader.document (666)'? – highlycaffeinated
666 działa dobrze, ale chciałbym móc przekazać konkretny numer X i uzyskać wynik fałszywego indeksu (X). Mam dużą liczbę potencjalnych dokumentów do testowania zapytań, a ja nie chcę wpisz je wszystkie – nflacco