2010-01-27 9 views
5

En utilisant la dernière version d'EasyMock, j'ai une méthode que je dois supprimer. La méthode prend un paramètre d'objet et renvoie void.EasyMock: fournir des arguments que vous ne connaissez pas lors de la compilation

La méthode stubbed est appelée par la méthode que je suis en train de tester. Pas de surprises là-bas. Ma difficulté est que l'objet fourni en tant qu'argument à la méthode mockée est créé par la méthode que je suis en train de tester.

Je sais que je peux contourner ce problème en utilisant createNiceMock() mais y a-t-il un moyen d'extirper explicitement cette méthode?

Exemple de code:

public interface IMockMe { 
    void doSomething(InnerObj obj); 
} 

public class TestMe { 
    IMockMe mockMe; 

    public void testThisMethod() { 
     InnerObj obj = new InnerObj(); 
     mockMe.doSomething(obj); 
    } 
} 

class Tester { 
    @Test 
    public void testThatDarnedMethod() { 
     IMockMe mocked = EasyMock.create(IMockMe.class); 

     mocked.doSomething(/* what goes here? */); 
     EasyMock.expectLastCall(); 

     TestMe testMe = new TestMe(mocked); 
     testMe.testThisMethod(); 

    } 
} 

Répondre

4

Jetez un oeil à la section "Les attentes flexibles avec l'argument Matchers" du EasyMock documentation. Exemple de la documentation:

String[] documents = new String[] { "Document 1", "Document 2" }; 
expect(mock.voteForRemovals(aryEq(documents))).andReturn(42); 

Le aryEq(documents) est un appel qui crée un matcher qui correspond à tout tableau avec le contenu à droite, plutôt que par l'identité correspondant.

Dans votre cas, vous pouvez utiliser le anyObject() matcher.

+0

Belle, merci! – roufamatic

+0

Lien brisé. S'il vous plaît voir: http://easymock.org/user-guide.html#verification-expectations – aglassman

+0

@aglassman: Correction, merci. –