2010-01-27 9 views
5

Korzystając z najnowszej wersji EasyMock, mam metodę, którą muszę wykasować. Metoda przyjmuje parametr obiektu i zwraca nieważne.EasyMock: dostarczanie argumentów, których nie znasz podczas kompilacji

Metoda skrótowa jest wywoływana za pomocą metody, którą testuję. Bez niespodzianek. Moja trudność polega na tym, że obiekt, który jest dostarczany jako argument do wyśmiewanej metody, jest tworzony za pomocą testowanej przeze mnie metody.

Wiem, że mogę obejść ten problem za pomocą createNiceMock(), ale czy istnieje sposób, aby jawnie uzyskać tę metodę?

Przykładowy kod:

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(); 

    } 
} 

Odpowiedz

4

Prosze spojrzeć na "elastyczne oczekiwania z dopasowujących argument" części EasyMock documentation. Próbka z dokumentacją:

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

aryEq(documents) to wezwanie, które tworzy matcher, który będzie pasować do każdego tablicę z prawem treści, zamiast dopasowane przez tożsamości.

W twoim przypadku możesz potrzebować matcher anyObject().

+0

Piękne, dzięki! – roufamatic

+0

Uszkodzony link. Zobacz: http://easymock.org/user-guide.html#verification-expectations – aglassman

+0

@aglassman: Naprawiono, dzięki. –

Powiązane problemy