Tengo un código similar a este a continuación:
Class A {
public boolean myMethod(someargs) {
MyQueryClass query = new MyQueryClass();
Long id = query.getNextId();
// some more code
}
}
Class MyQueryClass {
....
public Long getNextId() {
//lot of DB code, execute some DB query
return id;
}
}
Ahora estoy escribiendo una prueba para A.myMethod(someargs)
. Quiero omitir el método real query.getNextId()
y, en su lugar, devolver un valor de código auxiliar. Básicamente, quiero burlarme MyQueryClass
.
Entonces, en mi caso de prueba, he usado:
MyQueryClass query = PowerMockito.mock(MyQueryClass.class);
PowerMockito.whenNew(MyQueryClass.class).withNoArguments().thenReturn(query);
when(query.getNextId()).thenReturn(1000000L);
boolean b = A.getInstance().myMethod(args);
//asserts
Usé @RunWith(PowerMockRunner.class)
y @PrepareForTest({MyQueryClass.class})
al comienzo de mi clase de prueba.
Pero cuando depuro la prueba, sigue llamando al método real getNextId()
de la MyQueryClass
clase.
¿Que me estoy perdiendo aqui? ¿Alguien puede ayudarme ya que soy nuevo en Mockito y PowerMockito?