2010-02-26 10 views

Respuesta

26

No entiendo muy bien qué problema tiene con Mockito. Suponiendo que se crea una maqueta de la interfaz que contiene el método myMethod(), a continuación, puede comprobar sólo los parámetros al método que le interesa, por ejemplo (suponiendo que la interfaz se llama MyInterface y utilizando JUnit 4):.

@Test 
public void test() { 
    MyInterface myInterface = mock(MyInterface.class); 
    FooBar expectedFooBar = new FooBar();   

    // other testing stuff 

    verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...); 
} 

Deberá realizar una importación estática en los métodos de Mockito para que esto funcione. Al emparejador any() no le importa qué valor se haya pasado al verificar.

No puede evitar pasar algo por cada argumento de su método (incluso si solo es NULO).

+1

Supongo que realmente quiere llamar a myMethod(), por lo que necesita pasar todos esos parámetros cada vez que aumenta la prueba. –

+0

Estoy probando un controlador y estoy cortando mi método de servicio. el servicio es burlado. Supongo que cualquiera() debería funcionar. Gracias –

3

Crear una clase contenedora que llama al método real y rellena todos los argumentos, pero los que la oferta (a.k.a "delegación").

Y en la próxima oportunidad, presente un error en el proyecto solicitando mover los parámetros a un objeto de configuración.

+4

Es cierto: demasiados parámetros en una firma de método es un mal 'olor' de código. – SteveD

+0

Tengo 5 parámetros, y sí son necesarios :) Es un método de servicio que estoy tratando de cortar. Solo quería ser teórico para los métodos en los que realmente no desea guardar los parámetros –

+0

El problema con los argumentos de "un millón" parece ser un problema muy común con muchos servicios SOAP. #fail – Kimble

10

uso mockito.any

si myObj MyMethod acepta la secuencia, secuencia, bar, por ejemplo

a stub una llamada

Mockito.when(myojb.myMethod(Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class))) 
    .thenReturn(amockedobject); 

para verificar SteveD dio la respuesta ya

Mockito.verify(myojb).myMethod(
    Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class))); 
Cuestiones relacionadas