2015-12-23 4 views
0

У меня есть класс, который я хочу выполнить с помощью модуля, и у него есть зависимость Foo, которую я хочу высмеять. Этот класс Foo иногда запускает события, когда вызывается определенный метод. Но не знаю, как издеваться над классом Foo, чтобы получить это поведение.Пропавший экземпляр вызывает события

Итак, как я мог издеваться над классом Foo, что он действует как следующий код? Я использовал до сих пор Mockito, но открыт для новых фреймворков, если mockito не предлагает необходимых функций.

//This is how the class Foo should act when it is mocked 
public class Foo() 
{ 
    private Listener listener; 
    public void addListener(Listener listener) 
    { 
     this.listener = listener; 
    } 

    public void callMethodWhichMayFireAnEvent() 
    { 
     listener.event(); 
    } 
} 
+0

Вы хотите, чтобы фактическое событие было запущено вашим тестовым кодом? Othewise в Mockito вам нужно высмеять слушателя, который не будет называть фактический listener.event(), он будет издеваться. –

+0

Да, я хочу запустить реальное событие, чтобы проверить свой класс, если он правильно реагирует. – Semaphor

+0

Затем либо используйте заглушку (я не уверен, что это запустит реальное событие), либо используйте простой JUnit, где вы создаете экземпляр класса Foo и используете его в своих тестовых случаях. –

ответ

1

Чтобы получить то, что вы просите (что может или не может быть то, что вы на самом деле нужно), вы можете использовать ответ ...

final Listener listener = ...; // put your listener here 
    Foo fooMock = Mockito.mock(Foo.class); 

    Mockito.doAnswer(new Answer() { 

    @Override 
    public Object answer(InvocationOnMock invocation) throws Throwable { 
     listener.event(); // this calls your listener 
     return null; // actual Method is void, so this will be ignored anyway 
    } 

    }).when(fooMock.callMethodWhichMayFireAnEvent()); 

Таким образом, всякий раз, когда fooMock.callMethodWhichMayFireAnEvent() называется, это будет позвоните по event() методу вашего listener объекта.

+0

Ну, я думаю, что это то, что мне нужно и (по крайней мере) пыталось просить :-) – Semaphor