I am trying to return an expected value from a mocked method.
TestClass testClass = TestClass.getInstance();
ClassToMock classToMock = Mockito.mock(ClassToMock.class);
testClass.setClassToMock(classToMock);
ExpectedObject expectedObject = new ExpectedObject("1", "2", "3");
when(classToMock.method(ArgumentMatchers.anyString(), ArgumentMatchers.anyBoolean(),
ArgumentMatchers.any(A.class), ArgumentMatchers.any(B.class))
.thenReturn(expectedObject);
testClass.invokeTestMethod();
The TestClass and invokeTestMethod are like below:
public class TestClass {
private ClassToMock classToMock;
public void invokeTestMethod() {
ExpectedObject expectedObj1 = classToMock.method("A", "B", null, null);
::
::
ExpectedObject expectedObj2 = classToMock.method("X", "Y", null, null);
::
::
ExpectedObject expectedObj3 = classToMock.method("P", "Q", null, null);
::
::
}
public void setClassToMock(ClassToMock ctm) {
this.classToMock = ctm;
}
}
I have set the classToMock instance on the TestClass, to make sure that the TestClass works on the mock instance.
To make the issue clearer, the method call is happening on the mocked object (classToMock), but, the expected return value (ExpectedObject) is not coming.