Ayer estaba haciendo un test con EasyMock y me daba el siguiente error:
Resulta que mi código era como sigue:
java.lang.IllegalStateException: 2 matchers expected, 1 recorded.
at org.easymock.internal.ExpectedInvocation.createMissingMatchers(ExpectedInvocation.java:41)
at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:33)
at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:26)
at org.easymock.internal.RecordState.invoke(RecordState.java:64)
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:24)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:45)
at $Proxy0.find(Unknown Source)
at com.degesys.core.idm.logic.DTOFactoryImplTest.testGetUserDTO(DTOFactoryImplTest.java:190)
...
Resulta que mi código era como sigue:
EasyMock.expect(mockManager.find(LdapObject.class, EasyMock.anyObject())).andReturn(mockLdapObject);
“Gugleando” encontré lo siguiente:
http://marcels-javanotes.blogspot.com/2007/03/easymock-and-illegalstateexception.html
Y finalmente, en el “manual” de EasyMock dice:
If you would like to use matchers in a call, you have to specify matchers for all arguments of the method call.
Por tanto, mi código debía quedar como:EasyMock.expect(mockManager.find(EasyMock.same(LdapObject.class), EasyMock.anyObject())).andReturn(mockLdapObject);
Espero que si alguien tiene el mismo problema, esto le sirva de ayuda.