2015-12-22 5 views
0

Давайте предположим, что следующий тестПроверка вызова метода без выполнения его фактической реализации на Spy

public void someTest() throws Exception { 
    Foo foo = spy(new Foo()); 
    foo.someMethod(); // invokes methodToBeVerified() 
    verify(foo).methodToBeVerified(); 
} 

Когда тест выполняется он называет фактическую реализацию foo.methodToBeVerified(). Я хотел бы, чтобы тест проверял, был ли вызван этот конкретный метод или нет , но Я не хочу, чтобы его реализация выполнялась. Можно ли это сделать с помощью шпиона Mockito?

ответ

1

Да, с помощью

doNothing().when(foo).methodToBeVerified(); 

, как в следующем примере

public class FooTest { 

    static class Foo { 

     public void someMethod() { 
      System.out.println("someMethod called"); 
      System.out.println("calling method to be verified..."); 
      methodToBeVerified(); 
     } 

     public void methodToBeVerified() { 
      System.out.println("methodToBeVerified called"); 
     } 
    } 

    @Test 
    public void someTest() throws Exception { 
     Foo foo = spy(new Foo()); 
     doNothing().when(foo).methodToBeVerified(); 
     foo.someMethod(); 
     verify(foo).methodToBeVerified(); 
    } 

} 

Для справки, что вы ищете, называется Частичное издевается. Real (spied) partial mocks поддерживаются в Mockito с версии 1.8.0.

+0

Большое спасибо, это мне помогло. –