Je ne suis pas du tout avoir la chance d'obtenir Mockito à la fonction de capture des valeurs d'argument! Je me suis moqué d'un index de moteur de recherche et au lieu de construire un indice, je suis juste en utilisant une table de hachage.
// 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))
Je ne peux pas utiliser des arguments arbitraires parce que je suis en essais les résultats des requêtes (c'est à dire les documents qu'ils de retour). De même, je ne veux pas spécifier une valeur spécifique et d'avoir une ligne pour chaque document!
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))
J'ai regardé les rappels de la section sur l' Utilisation de Mockito page. Malheureusement, il n'est pas Java et je ne pouvais pas obtenir ma propre interprétation de l'œuvre en Java.
EDIT (pour des précisions): Comment puis-je obtenir Mockito pour capturer un argument X et la passer dans ma fonction? Je veux que la valeur exacte (ou une référence) de X transmis à la fonction.
Je ne veux pas énumérer tous les cas, et à l'arbitraire argument ne fonctionnera pas parce que je suis en essais pour des résultats différents pour les différentes requêtes.
Le Mockito page dit
val mockedList = mock[List[String]]
mockedList.get(anyInt) answers { i => "The parameter is " + i.toString }
Ce n'est pas java, et je ne sais pas comment le traduire en java ou transmettre tout ce qui s'est passé dans une fonction.