PowerMock:来自父类的存根方法

时间:2015-09-23 20:28:49

标签: java override powermock super stub

我正在使用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());
}

2 个答案:

答案 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