Ho un codice un po 'come questo di seguito:
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;
}
}
Ora sto scrivendo un test per A.myMethod(someargs)
. Voglio saltare il metodo reale query.getNextId()
e restituire invece un valore stub. Fondamentalmente, voglio prendere in giro MyQueryClass
.
Quindi nel mio caso di test, ho usato:
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
Ho usato @RunWith(PowerMockRunner.class)
e @PrepareForTest({MyQueryClass.class})
all'inizio della mia lezione di prova.
Ma quando eseguo il debug del test, sta ancora chiamando il vero metodo getNextId()
della MyQueryClass
classe.
Cosa mi manca qui? Qualcuno può aiutarmi perché sono nuovo di Mockito e PowerMockito.