2012-06-01 16 views
6

El método Quiero probar se llama a un método maqueta con diferentes argumentos:JMock - varias invocaciones con diferentes argumentos

public void methodToTest(){ 
    getMock().doSomething(1); 
    getMock().doSomething(2); 
    getMock().doSomething(3); 
} 

En mi prueba de unidad que quiero saber, si methodToTest realmente está llamando a esos métodos con exactitud esos argumentos. Este es el código que he escrito:

@Test 
public void myMockTest(){ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
} 

A (2) me sale un "invocación inesperado" - como si no se pudiera distinguir diferentes argumentos. Así que he intentado que uno:

exactly(3).of(mock).doSomething(with(Matchers.anyOf(same(1), same(2), same(3)))); 

Pero esto también no hacía lo que he esperado.

Finalmente, éste trabajó:

exactly(3).of(mock).doSomething(with(any(Integer.class))); 

por lo que sé, que mi método fue llamado 3 veces con cualquier número entero. ¿Hay alguna manera de asegurarse de que es exactamente el argumento (s) que he pasado?

+0

Bueno, el código publicado funciona bien. JMock parece tener problemas con los objetos fundidos, sin embargo ... Resuelto hasta el momento. –

+0

¿Cuáles son los problemas de fundición? ¿Puedes darnos más detalles? –

+0

¿Se solucionó esta pregunta? –

Respuesta

2

¿Envolvió las expectativas con un bloque de verificación?

context.checking(new Expectations() {{ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
}}); 

Además, ¿sabe que el jmock no impone la secuencia a menos que lo haga explícitamente?

+0

Utilicé la sintaxis correcta y JMock usa una secuencia predeterminada sin tener que decirlo. Todavía no estoy seguro de lo que estaba causando los problemas. Estoy usando una lista y agregando un elemento. Afirmando la igualdad del objeto y el objeto obtenido por list.get (0) devolvió false, aunque ES el mismo objeto. Reemplazar equals/hashcode en mi clase de objetos resolvió el problema. –

Cuestiones relacionadas