Ich habe kein Glück, dass Mockito Funktionsargumentwerte erfasst! Ich verspotte einen Suchmaschinenindex und anstatt einen Index zu erstellen, verwende ich nur einen 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))
Ich kann keine beliebigen Argumente verwenden, da ich die Ergebnisse von Abfragen teste (dh welche Dokumente sie zurückgeben). Ebenso möchte ich nicht für jedes Dokument einen bestimmten Wert angeben und eine Zeile haben!
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))
Ich habe mir den Abschnitt mit Rückrufen auf der Seite Using Mockito angesehen . Leider ist es kein Java und ich konnte meine eigene Interpretation davon nicht in Java zum Laufen bringen.
BEARBEITEN (zur Verdeutlichung): Wie kann ich Mockito dazu bringen, ein Argument X zu erfassen und an meine Funktion zu übergeben? Ich möchte, dass der genaue Wert (oder die Referenz) von X an die Funktion übergeben wird.
Ich möchte nicht alle Fälle aufzählen, und ein beliebiges Argument funktioniert nicht, da ich für verschiedene Abfragen auf unterschiedliche Ergebnisse teste.
Die Mockito-Seite sagt
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Das ist kein Java, und ich weiß nicht, wie ich es in Java übersetzen oder was auch immer passiert ist, an eine Funktion übergeben soll.
Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666))
sollte das Scheinobjekt für Sie einrichten. Was passiert, wenn Sie anrufenreader.document(666)
?