可以模拟超类的方法吗?(未覆盖)
public class FooBarTest {
@Test
public void test() {
Bar bar = Mockito.spy(new Bar());
Mockito.doReturn("Mock!").when((Foo) bar).test();
String actual = bar.test(); // returns only "Mock!"
assertEquals("Mock! Bar!", actual);
}
public static class Foo {
public String test(){
return "Foo!";
}
}
public static class Bar extends Foo {
@Override
public String test(){
return super.test()+" Bar!";
}
}
}
关闭:如何在此处突出显示代码?
下面是一个解决方案,使用 JMockit 模拟 API:
public class FooBarTest
{
@Test
public void test()
{
final Bar bar = new Bar();
new NonStrictExpectations(Foo.class) {{ bar.test(); result = "Mock!"; }};
String actual = bar.test();
assertEquals("Mock! Bar!", actual);
}
public static class Foo {
public String test() { return "Foo!"; }
}
public static class Bar extends Foo {
@Override
public String test() { return super.test() + " Bar!"; }
}
}