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?
Bueno, el código publicado funciona bien. JMock parece tener problemas con los objetos fundidos, sin embargo ... Resuelto hasta el momento. –
¿Cuáles son los problemas de fundición? ¿Puedes darnos más detalles? –
¿Se solucionó esta pregunta? –