If you own Mockito 1.9.5 or higher, there is a static method that can execute the Answer object for you. You need to write something like this:
Let's consider, we have an interface named Application with a method myFunction.
public interface Application {
public String myFunction(String abc);
}
Here is the test method with a Mockito answer:
public void testMyFunction() throws Exception {
Application mock = mock(Application.class);
when(mock.myFunction(anyString())).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return (String) args[0];
}
});
assertEquals("someString",mock.myFunction("someString"));
assertEquals("anotherString",mock.myFunction("anotherString"));
}
In Mockito 1.9.5 and Java 8 there is a simpler way by using lambda functions:
when(myMock.myFunction(anyString())).thenAnswer(i -> i.getArguments()[0]);