2009-02-25 8 views
0

Je suis frustré d'essayer de faire une chose simple - Je veux invoquer une méthode sur un objet fantaisie et ne pas vérifier sa valeur de retour. Je veux juste vérifier qu'il a été appelé avec les paramètres corrects.Comment vérifier un appel de méthode et ignorer la valeur de retour dans EasyMock?

Exemple:

MyInterface mockObject = createMock(MyInterface.class); 
SomeObject param = new SomeObject(); 

/* the write object is not void and returns an instance of FooOjbect. 
* I want to ignore everything to do with FooObject - I do not care what 
* it is because I do not store its value. How do I do this? */ 
mockObject.write(param); 

replay(mockObject); 

someOtherObjectThatCallsAboveMockObject.process(mockObject); 

verify(mockObject); 

Ainsi sont-il des experts en EasyMock là-bas? Je ne suis pas concerné par la conception de la méthode sous-jacente que j'appelle et ne stocke pas la valeur de retour parce que l'implémentation provient d'une bibliothèque réseau tierce (Apache Mina) et je n'ai aucun contrôle sur l'API.

EDIT: Conclusion atteint quelque temps plus tard

Je jetai EasyMock parce qu'il n'a pas été facile et est allé pour Mockito.

+1

J'ai également changé pour Mockito. C'est beaucoup plus facile et plus confortable, je pense. – guerda

Répondre

3

Au lieu de

mockObject.write(param) 

écrire

EasyMock.expect(mockObject.write(param)).andReturn(/* return value here */); 

Vous devez toujours retourner une valeur pour le code pour être correct, mais vous pouvez ignorer la valeur plus loin dans le test.

+0

Pouvez-vous donner un exemple de comment j'ignore la valeur plus tard? J'ai parcouru la documentation et je ne vois pas de bons exemples. – Elijah

+0

@Elijah Par "ignorer la valeur" cela signifie que votre classe réelle ne dépend pas de la valeur qui en sort. Si votre classe actuelle n'agit pas sur cette valeur de retour, cela signifie qu'elle l'ignore. Vous devez fournir une valeur de retour, période. –

+0

... ignorez dans votre test - ne faites plus référence à nouveau. Avez-vous un problème avec votre vrai code? Est-ce que andReturn (null) cause des problèmes? Vous essayez simplement de rendre la valeur de retour suffisante pour que le code fonctionne comme vous le souhaitez. – Stephen

Questions connexes