我正在使用PowerMock,我想知道如何保留子类的所有行为,但是存在可能被孩子覆盖的存根super
调用。
说我有这个班:
public class A {
public String someMethod() {
return "I don't want to see this value";
}
}
和一个子类:
public class B extends A {
@Override
public String someMethod() {
return super.someMethod() + ", but I want to see this one";
}
}
如何将呼叫存根到super.someMethod()
?
我试过
@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());
}
答案 0 :(得分:2)
您可以尝试从Parent类
中抑制方法PowerMockito.suppress(methodsDeclaredIn(A.class));
这是一篇关于Stubbing,抑制和替换可能有用的PowerMock的文章。
https://www.jayway.com/2013/03/05/beyond-mocking-with-powermock/
答案 1 :(得分:1)
你正在尝试的演员不会像你期望的那样工作。但是,我认为你可以通过PowerMockito来解决这个问题。
看看这个StackOverflow answer。