Мне не удалось заставить 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 было передано функции.
Я не хочу перечислять все случаи, и произвольный аргумент не сработает, потому что я проверяю разные результаты для разных запросов.
На странице 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)
?