'doAnswer method is not calling in mockito

I am trying to mock the success block in addCallBack of ListenableFutureCallback.class .but doAnswer method is not calling in the Test class.

public void publish(String topicName,Object object) throws Exception {
 
 ListenableFuture<SendResult> result = kafkaMessageSender.send(topicName,object);
 
 result.addCallBack( 
 s -> {
 System.out.println("addCallBack..");
            RecordMetadata r= s.getRecordMetadata();
            RecordMetadata p= s.getProducerRecord();
 },
    f -> {
 
 System.out.println("failure..");
 });
 
} 

@Test
public void publishEvent()
{
        KafkMessageSender kafkMessageSender=Mockito.mock(KafkMessageSender.class);
        SendResult sendResult=Mockito.mock(SendResult.class);
        ListenableFuture listenablFuture=Mockito.mock(ListenableFuture.class);

        Mockito.when(kafkMessageSender.send(Mockito.anyString(),Mockito.any(Object.class)).thenReturn(listenablFuture);

        Mockito.doAnswer(invocation -> {
         System.out.println("doAnswer..");
        ListenableFutureCallback<SendResult> listenableFutureCallback=invocation.getArgument(0,ListenableFutureCallback.class);
        listenableFutureCallback.onSuccess(sendResult);

        return null;
        }).when(listenablFuture).addCallBack(Mockito.any(ListenableFutureCallback.class));

        publisher.publish("sampletopic","test");

}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source