Saya tidak beruntung mendapatkan Mockito untuk menangkap nilai argumen fungsi! Saya mengejek indeks mesin pencari dan alih-alih membuat indeks, saya hanya menggunakan hash.
// 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))
Saya tidak dapat menggunakan argumen sewenang-wenang karena saya sedang menguji hasil kueri (yaitu dokumen mana yang dikembalikan). Demikian juga, saya tidak ingin menentukan nilai tertentu dan memiliki garis untuk setiap dokumen!
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))
Saya melihat bagian panggilan balik di halaman Menggunakan Mockito . Sayangnya, ini bukan Java dan saya tidak bisa mendapatkan interpretasi saya sendiri tentang itu untuk bekerja di Java.
EDIT (untuk klarifikasi): Bagaimana cara membuat Mockito menangkap argumen X dan meneruskannya ke fungsi saya? Saya ingin nilai pasti (atau ref) dari X diteruskan ke fungsi.
Saya tidak ingin menghitung semua kasus, dan argumen sewenang-wenang tidak akan berfungsi karena saya menguji hasil yang berbeda untuk kueri yang berbeda.
Halaman Mockito mengatakan
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Itu bukan java, dan saya tidak tahu cara menerjemahkan ke dalam java atau meneruskan apa pun yang terjadi menjadi suatu fungsi.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
harus menyiapkan objek tiruan untuk Anda. Apa yang terjadi saat Anda meneleponreader.document(666)
?