Calling callbacks with Mockito

前端 未结 4 1818
梦毁少年i
梦毁少年i 2020-11-28 07:36

I have some code

service.doAction(request, Callback callback);

How can I using Mockito grab the callback object, and call c

4条回答
  •  情歌与酒
    2020-11-28 07:56

    If you have a method like:-

    public void registerListener(final IListener listener) {
        container.registerListener(new IListener() {
            @Override
            public void beforeCompletion() {
            }
    
            @Override
            public void afterCompletion(boolean succeeded) {
                listener.afterCompletion(succeeded);
            }
        });
    }
    

    Then following way you can mock the above method easily :-

    @Mock private IListener listener;
    
    @Test
    public void test_registerListener() {
        target.registerListener(listener);
    
        ArgumentCaptor listenerCaptor =
                ArgumentCaptor.forClass(IListener.class);
    
        verify(container).registerListener(listenerCaptor.capture());
    
        listenerCaptor.getValue().afterCompletion(true);
    
        verify(listener).afterCompletion(true);
    }
    

    I hope this might help someone, as i had spend lot of time in figuring out this solution

提交回复
热议问题