ฉันไม่มีโชคเลยที่ได้รับ 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)
?