如何模拟超级方法(带返回)



可以模拟超类的方法吗?(未覆盖)

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!"; }
    }
}

相关内容

  • 没有找到相关文章

最新更新