为什么mockito在存根时会调用父方法

时间:2016-04-06 09:32:57

标签: java junit mocking mockito

为什么mockito会调用stubbed方法。

为什么它会在when..thenReturn下实际调用 func 我在做调试时已经检查过了。

  @Test
    public void function(){
       MyClassChild obj = mock(MyClassChild.class);
       when(obj.func("abc")).thenReturn(3);
    }
    ...
    class MyClass {
       public int func(String s) {
          if (s.equals("abc"))
             return 3;
          else
             return 1;
       }
    }

class MyClassChild extends MyCLass {

    }

1 个答案:

答案 0 :(得分:1)

我尝试通过以下测试重播您的问题:

public class StackTest {
    @Test
    public void mockedFunction() {
        MyClass obj = mock(MyClass.class);
        when(obj.func("abc")).thenReturn(3);

        assertEquals(3, obj.func("abc"));
    }

    @Test
    public void function() {
        MyClass obj = new MyClass();

        assertEquals(7, obj.func("abc"));
    }
}

public class MyClass {

    public int func(String s) {
        if (s.equals("abc"))
            return 7;
        else
            return 9;
    }
}

所有成功执行的测试。你能说明你是如何调用测试的吗?