2016-04-06 2 views
1

Почему mockito делает вызов для зашитого метода.Почему mockito делает вызов для родительского метода при stubbing

Зачем он делает фактический звонок для func under when..thenReturn Я проверил при выполнении отладки.

@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

http://stackoverflow.com/questions/11996809/mockito-mock-calling-real-method-implementation-when-attempting-to-stub-package –

ответ

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

Все тесты, где выполняются успешно. Можете ли вы показать, как вы вызываете тест?

+0

'MyClass' в OP не является общедоступным ... Возможно вот в чем проблема. Вы могли бы взглянуть на [этот вопрос] (http://stackoverflow.com/questions/11996809/mockito-mock-calling-real-method-implementation-when-attempting-to-stub-package) как @Som Bhattacharyya points в комментарии – troig

+0

Я понял это, я издевался над дочерним классом и пытался «when..then()» в parent function.SI. Я думаю, что mockito не работает должным образом в методе родительского класса. –