2014-02-17 7 views
0

Это кажется нормальноPowerMock MockStatic ожидать не работает EasyMock anyObject

EasyMock.expect(URLDecoder.decode("test", "UTF-8")).andThrow(new UnsupportedEncodingException("This is a test")); 

Это не

EasyMock.expect(URLDecoder.decode((String) EasyMock.anyObject(), "UTF-8")).andThrow(new UnsupportedEncodingException("This is a test")); 

Это проливает следующее

java.lang.IllegalStateException: 2 matchers expected, 1 recorded. 
This exception usually occurs when matchers are mixed with raw values when recording a method: 
foo(5, eq(6)); // wrong 
You need to use no matcher at all or a matcher for every single param: 
foo(eq(5), eq(6)); // right 
foo(5, 6); // also right 
at org.easymock.internal.ExpectedInvocation.createMissingMatchers(ExpectedInvocation.java:47) 
at org.easymock.internal.ExpectedInvocation.<init>(ExpectedInvocation.java:40) 
at org.easymock.internal.RecordState.invoke(RecordState.java:78) 
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:40) 
at 

ответ

0

Если вы собираетесь использовать 1 в ожидании, тогда вам нужно использовать все матчи.

К сожалению, это не очень хорошо объясняется в сообщении об ошибке, которое вы получаете из EasyMock, но добавление EasyMock.eq() arround в другую строку должно сделать трюк.

EasyMock.expect(URLDecoder.decode((String) EasyMock.anyObject(), EasyMock.eq("UTF-8"))).andThrow(new UnsupportedEncodingException("This is a test")); 
Смежные вопросы