2010-11-24 20 views
6

Intentamos verificar el comportamiento de una acción con Mockito. El código de prueba es el siguienteMockito se queja de argumentos erróneos

final Type1 mock = mock(Type1.class); 
new SomeAction<Type1>(mock).actionPerformed(null); 

verify(mock).someMethod(); 

El método actionPerformed contiene sólo la llamada del algunMetodo en el objeto previsto en el constructor de Tipo 1. Sin embargo, Mockito se queja de que la llamada al método esperado no se realizó, sino que se produjo una llamada al método diferente. ¡Pero la representación de Cadena de las dos llamadas impresas por Mockito es exactamente la misma!

¿Alguna explicación de lo que está pasando?

Actualización: ErrorMessage de Mockito

Argument(s) are different! Wanted: 
type1.someMethod(); 
-> at xxx 
Actual invocation has different arguments: 
type1.someMethod(); 
-> at xxx 
+0

Probé esto, y funcionó como esperabas que funcionara (verifica los pases). ¿Qué versión de Mockito estás usando? Estoy en 1.8. ¿Estás seguro de que tu parámetro nulo no está causando que se tome una rama diferente? – omerkudat

+0

La versión es 1.8.5; someMethod es un oneliner, por lo que realmente no hay una parte diferente. –

+0

¿Podría proporcionar un SSCCE por favor? – daveb

Respuesta

3

Esto es un poco de un tramo, pero ver sus implementaciones toString. Me encontré con algunos escenarios de prueba unitaria irritante donde lo esperado y lo observado parecían ser los mismos desde el punto de vista de la prueba de la unidad cuando en realidad eran diferentes. Al final, fue una variación en String lo que me hizo creer que había una similitud cuando en realidad no era así.

+0

ya que el método devuelve vacío y no toma argumentos, no hay ningún toString involucrado ... creo. –

+0

La representación toString() mostrada en el resultado de la prueba unitaria me engañó una vez. Para averiguar si los 2 objetos de los que se quejaba Mockito son o no diferentes, anulo nuevamente el toString tal como está en Object. –

Cuestiones relacionadas