Мені не пощастило змусити 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)
?