Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Stubbing With Mockito ArgumentCaptor [Snippets]

DZone's Guide to

Stubbing With Mockito ArgumentCaptor [Snippets]

Using methods that need collaborators? See how Mockito's ArgumentCaptor can lend a hand to make your testing and verification simpler.

· Java Zone ·
Free Resource

Learn how to build stream processing applications in Java-includes reference application. Brought to you in partnership with Hazelcast.

Consider a scenario where we are testing a method that depends on a collaborator. This collaborator takes an argument while calling one of its methods. 

Now, there can be two scenarios.

First, the argument is passed externally to the method we are testing and then used by the collaborator during its own method call

method(argument arg)
{
    collaborator.callMethod(arg);
}


To test this method, we mock the collaborator and then call the method as follows:

method(arg1);
Mockito.verify(collaborator).callMethod(arg1);


So here, in the test method, we have the arg1 instance and, hence, can be verified.

Second, the argument being used by the collaborator to make its own method call is not passed externally, but is instead created inside the method being tested:

method()
{
    arg=CreateArgumentInternally();
    collaborator.callMethod(arg);
}


To test this method, we mock the collaborator and then call the method as follows:

method();


But how do we verify the collaborator was called with which arguments, since we don't have access to the argument, as it was created internally inside the method? This where the Mockito ArgumentCaptor comes into the picture.

Using the ArgumentCaptor, we can get the argument instance created internally and used in the collaborator call and, thus, we can verify it.

method();
Mockito.verify(collaborator).callMethod(captor.capture());
Argument actual = captor.getValue();

Learn how to build distributed stream processing applications in Java that elastically scale to meet demand- includes reference application.  Brought to you in partnership with Hazelcast.

Topics:
java ,mockito ,collaborator ,argumentcaptor

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}