J'utilise PowerMock et j'aimerais savoir comment conserver tous les comportements de la classe enfant, mais les appels stub super
pouvant être annulés par l'enfant.
Dis que j'ai cette classe:
public class A {
public String someMethod() {
return "I don't want to see this value";
}
}
et une sous classe:
public class B extends A {
@Override
public String someMethod() {
return super.someMethod() + ", but I want to see this one";
}
}
Comment puis-je raccrocher l'appel à super.someMethod()
?
J'ai essayé
@Test
public void test() {
B spy = PowerMockito.spy(new B());
PowerMockito.doReturn("value").when((A)spy).someMethod();
assertEquals("value, but I want to see this one", spi.someMethod());
}
N'oubliez pas d'ajouter @PrepareForTest({ParentClassToSupress.class})
sur votre classe de test. Ensuite, vous pouvez faire ce que Steve suggère et supprimer les méthodes dans le parent: PowerMockito.suppress(methodsDeclaredIn(ParentClassToSupress.class));
Vous pouvez essayer de supprimer les méthodes de la classe Parent,
PowerMockito.suppress(methodsDeclaredIn(A.class));
Voici un article sur le stubbing, la suppression et le remplacement par PowerMock qui pourrait être utile.
https://www.jayway.com/2013/03/05/beyond-mocking-with-powermock/
La distribution que vous tentez ne fonctionnera pas comme prévu. Cependant, je pense que vous avez plusieurs options pour résoudre ce problème, certainement avec PowerMockito.
Regardez cette réponse StackOverflow .