I would like to capture the argument inputMessage in the readInternal() of the CustomMessageConverter class when client submits a message. client object here is not a mock object.
@Component public class CustomMessageConverter extends AbstractHttpMessageConverter<Object> { ... @Override protected Object readInternal(final Class<? extends Object> clazz, final HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { ...do something here... } ... } In AbstractHttpMessageConverter class:
@Override public final T read(Class<? extends T> clazz, HttpInputMessage inputMessage) throws IOException { return readInternal(clazz, inputMessage); } So, I wrote a mockito class to capture it.
But, it is still going to the regular converter class. Could you suggest what I am doing wrong?
@Mock CustomMessageConverter mockMessageConverter; @Captor private ArgumentCaptor<HttpInputMessage> inputMessage; @Test public void test() { when(mockMessageConverter.read(CustomMessage.class, inputMessage.capture())).thenReturn(null); client.submitMessage(Message); verify(mockMessageConverter, times(1)); Object actual = customConverter.read(CustomMessage.class, inputMessage.getValue()); }