J'ai un code un peu comme celui-ci ci-dessous:
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;
}
}
Maintenant j'écris un test pour A.myMethod(someargs)
. Je veux ignorer la méthode réelle query.getNextId()
et renvoyer à la place une valeur de stub. En gros, je veux me moquer MyQueryClass
.
Donc, dans mon cas de test, j'ai utilisé:
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
J'ai utilisé @RunWith(PowerMockRunner.class)
et @PrepareForTest({MyQueryClass.class})
au début de mon cours de test.
Mais quand je débogue le test, il appelle toujours la vraie méthode getNextId()
de la MyQueryClass
classe.
Qu'est-ce que j'oublie ici? Quelqu'un peut-il m'aider car je suis nouveau sur Mockito et PowerMockito.