2010-11-15 22 views
1

Comment vérifier le nombre d'éléments dans un ensemble dans Easymock? La classe que je suis en train de tester devrait appeler une méthode, en passant un ensemble avec n éléments. En ce moment, je suis un objet correspondant à la liste:EasyMock: Attendre le nombre d'éléments dans un ensemble

mockFooSetReceiver.saveFooSet(eq(name), 
      (List<IFooSet>) anyObject()); 
    replay(mockFooSetReceiver); 

Ce que je voudrais préciser le nombre d'éléments dans l'ensemble:

mockFooSetReceiver.saveFooSet(eq(name), 
      setOfNObject(100)); 
    replay(mockFooSetReceiver); 

Ou mieux encore, faire correspondre les éléments l'ensemble:

mockFooSetReceiver.saveFooSet(eq(name), 
      setEq(ecpectedSet)); 
    replay(mockFooSetReceiver); 

Dois-je rouler mon propre matcher, y en a-t-il un intégré? Ou quelqu'un a-t-il un setOfNObject ou setEq qu'il aimerait partager?

Répondre

3

À mesure que doit equals (..) selon ce contrat:

Compares l'objet spécifié avec cet ensemble pour l'égalité. Retourne true si l'objet spécifié est également un ensemble, les deux ensembles ont la même taille et chaque membre de l'ensemble spécifié est contenu dans cet ensemble (ou de manière équivalente, chaque membre de cet ensemble est contenu dans l'ensemble spécifié). Cette définition garantit que la méthode equals fonctionne correctement sur les différentes implémentations de l'interface .

un simple EasyMock.eq (ecpectedSet) fait le travail.

Si ce n'est que la taille de l'ensemble @ La réponse de Guillaume est la voie à suivre.

+0

Merci, cela fonctionne très bien. Beaucoup plus facile que de faire mon propre matcher. –

1

Vous devez concevoir votre propre matcher et dans la méthode matches:

  1. vérifier le nombre d'arguments
  2. jeté l'argument set à cocher Définir
  3. la longueur

Désolé je n'ai aucun matcher semblable à la main.