mockito rappels et d'obtenir des valeurs d'argument

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 l'article sur le À L'Aide De Mockito page. Malheureusement, il n'est pas Java et je ne pouvais pas obtenir ma propre interprétation de l'œuvre en Java.

MODIFIER (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.

La 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.

  • Je ne suis pas sûr de comprendre exactement ce qui est un échec pour vous. Votre appel à Mockito.when(reader.document(666)).thenReturn(document(fakeIndex(666)) devrait installation de la maquette de l'objet pour vous. Ce qui se passe lorsque vous appelez reader.document(666)?
  • Le 666 fonctionne très bien. Cependant, je voudrais être en mesure de passer dans un nombre X et obtenir le résultat de fakeIndex(X). J'ai un grand nombre de docs pour tester les requêtes, et je ne veux pas entrer dans tous les.
InformationsquelleAutor nflacco | 2011-07-08