EasyMock: IllegalStateException y matchers

Ayer estaba haciendo un test con EasyMock y me daba el siguiente error:

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.

Tagged:
  • Demian

    Justo estaba con este problema. Muchas gracias por la solucion!!!

    Saludos!!