Mock-Any in PowerMock using EasyMock

1,753 views
Skip to first unread message

Kunal

unread,
Aug 31, 2009, 10:41:11 AM8/31/09
to PowerMock
Hi All,

I have two problem with EasyMock.anyObject() :

1. Currently this can't be used for primitive data-types like int,
long, boolean etc.

2. When mocking is set for following class - method :

Class A
{
......
public String getResource(int p1, String p2, String p3, String
[] p4)
{
......
}
}

Mocked Statement :

A objA = PowerMock.createNiceMock(A.class);

EasyMock.expect(objA.getResource(1,(String)EasyMock.anyObject(),
(String)EasyMock.anyObject(),(String[])EasyMock.anyObject())).andReturn
("testString").anyTimes();

PowerMock.replayAll(); ----------> This statement throws below
exception :


java.lang.IllegalStateException : 4 matchers expected, 3 recorded.

at org.easymock.internal.ExpectedInvocation.createMissingMatchers
(ExpectedInvocation.java:45)
at org.easymock.internal.ExpectedInvocation.<init>
(ExpectedInvocation.java:37)
at org.easymock.internal.ExpectedInvocation.<init>
(ExpectedInvocation.java:29)
at org.easymock.internal.RecordState.invoke(RecordState.java:65)
at org.easymock.internal.MockInvocationHandler.invoke
(MockInvocationHandler.java:27)
at org.easymock.internal.ObjectMethodsFilter.invoke
(ObjectMethodsFilter.java:61)
at
org.powermock.api.easymock.internal.signedsupport.SignedSupportingClassProxyFactory
$1.intercept(SignedSupportingClassProxyFactory.java:125)


Please suggest how to resolve these problems.

Thanks,
Kunal

Johan Haleby

unread,
Aug 31, 2009, 10:59:53 AM8/31/09
to powe...@googlegroups.com
You're missing a matcher for the first argument (the integer), e.g.
     EasyMock.expect(objA.getResource(EasyMock.eq(1) ,(String)EasyMock.anyObject(),

(String)EasyMock.anyObject(),(String[])EasyMock.anyObject())).andReturn
("testString").anyTimes();

/Johan
Reply all
Reply to author
Forward
0 new messages