PowerMock: stub-Methoden von der übergeordneten Klasse
Ich bin mit PowerMock und ich würde gerne wissen, wie man alle Verhalten des Kindes Klasse, aber die stub super
Anrufe, die möglicherweise überschrieben werden durch das Kind.
Sagen, dass ich diese Klasse:
public class A {
public String someMethod() {
return "I don't want to see this value";
}
}
- und eine sub-Klasse:
public class B extends A {
@Override
public String someMethod() {
return super.someMethod() + ", but I want to see this one";
}
}
Wie kann ich die stub den Aufruf super.someMethod()
?
Habe ich versucht,
@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());
}
- Was passiert in der aktuellen test-Fall?
- Es ist stubbing der Unterklasse die Methode.
- Scheint, wie dieser bug :github.com/jayway/powermock/issues/487
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, die Unterdrückung der Methoden von der Übergeordneten Klasse,
Hier ist ein Artikel über die Lunte, die Unterdrückung und den Austausch mit PowerMock, dass Sie möglicherweise verwenden.
https://www.jayway.com/2013/03/05/beyond-mocking-with-powermock/
suppress
Methode nicht hilfreich ist, da muss ich zurückgeben verspottet Wert. Danke aber.Vergessen Sie nicht, fügen Sie
@PrepareForTest({ParentClassToSupress.class})
auf Ihrem test-Klasse. Dann können Sie tun, wie Steve schon sagt und unterdrücken Methoden in der parent:PowerMockito.suppress(methodsDeclaredIn(ParentClassToSupress.class));
Den cast, den Sie versuchen, ist nicht zur Arbeit zu gehen, als Sie erwarten. Ich denke aber, Sie haben ein paar Optionen, um um dieses, sicherlich mit PowerMockito.
Werfen Sie einen Blick auf diese StackOverflow-Antwort.