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

Download Microservices for Java Developers: A hands-on introduction to frameworks and containers. Brought to you in partnership with Red Hat.

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();

Download Building Reactive Microservices in Java: Asynchronous and Event-Based Application Design. Brought to you in partnership with Red Hat

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 }}