Tôi không gặp may khi Mockito nắm bắt các giá trị đối số của hàm! Tôi đang chế nhạo một chỉ mục của công cụ tìm kiếm và thay vì xây dựng một chỉ mục, tôi chỉ đang sử dụng một hàm băm.
// 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))
Tôi không thể sử dụng các đối số tùy ý vì tôi đang kiểm tra kết quả của các truy vấn (tức là tài liệu nào chúng trả về). Tương tự như vậy, tôi không muốn chỉ định một giá trị cụ thể cho và có một dòng cho mỗi tài liệu!
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))
Tôi đã xem phần gọi lại trên trang Sử dụng Mockito . Thật không may, nó không phải là Java và tôi không thể hiểu được điều đó để hoạt động trong Java.
CHỈNH SỬA (để làm rõ): Làm cách nào để Mockito nắm bắt đối số X và chuyển đối số đó vào hàm của tôi? Tôi muốn giá trị chính xác (hoặc ref) của X được truyền vào hàm.
Tôi không muốn liệt kê tất cả các trường hợp và đối số tùy ý sẽ không hoạt động vì tôi đang thử nghiệm các kết quả khác nhau cho các truy vấn khác nhau.
Trang Mockito nói
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Đó không phải là java và tôi không biết cách dịch sang java hoặc chuyển bất cứ điều gì đã xảy ra vào một hàm.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
sẽ thiết lập đối tượng giả cho bạn. Điều gì xảy ra khi bạn gọireader.document(666)
?