Мне не повезло заставить 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))
Я просматривал раздел обратных вызовов на странице Using Mockito .К сожалению, это не Java, и я не мог заставить свою собственную интерпретацию этого работать в Java.
РЕДАКТИРОВАТЬ (для пояснения): Как мне заставить Mockito захватить аргумент X и передать его вмоя функция?Я хочу, чтобы точное значение (или ref) X было передано в функцию.
Я не хочу перечислять все случаи, и произвольный аргумент не будет работать, потому что я проверяю разные результаты для разных запросов.
На странице Mockito написано:
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Это не Java, и я не знаю, как перевести на Java или передать то, что произошло в функцию.