2010-01-27 10 views
5

Utilizando la última versión de EasyMock, tengo un método que necesito eliminar. El método toma un parámetro de objeto y devuelve vacío.EasyMock: suministrando argumentos que no conoce en tiempo de compilación

El método que estoy probando llama al método stubbed. No hay sorpresas allí. Mi dificultad es que el objeto que se proporciona como argumento para el método burlado está siendo creado por el método que estoy probando.

Sé que puedo evitar esto usando createNiceMock(), pero ¿hay alguna manera de rescindir explícitamente este método?

Código de ejemplo:

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

    } 
} 

Respuesta

4

Para consultar todas las expectativas "flexibles con comparadores argumento de la" sección de la EasyMock documentation. Muestra de la documentación:

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

El aryEq(documents) es una llamada que crea un matcher que coincidirá con cualquier matriz con los contenidos adecuados, en lugar de a juego por la identidad.

En su caso, es posible que desee el comparador anyObject().

+0

Hermosa, gracias! – roufamatic

+0

Enlace roto. Consulte: http://easymock.org/user-guide.html#verification-expectations – aglassman

+0

@aglassman: corregido, gracias. –

Cuestiones relacionadas