2015-06-11 9 views
0

Я изменил возвращаемое значение метода в моем коде от void до и Object. Тогда два теста junit не показали, что отсутствовал expect(...).andReturn(...). После добавления этих одного теста фиксируется, а другие по-прежнему бросает исключение, которое кажется немного странным:Easymock: вызываемые вызовы использовались вне ожиданий

java.lang.IllegalStateException: использовались Сличитель звонки за пределы ожидания

Код, который работает для одного, но не другой:

expect(myMock.foo(1l,FooEnum.A)).andReturn(EasyMock.anyObject(String.class)); 

Любые идеи?

ответ

0

я изменил код для

expect(myMock.foo(1l,FooEnum.A)).andReturn(new Object()); 

и теперь он работает. Это все еще странно, почему я получаю эту ошибку, так как я определенно вернуть new Object (а не null или что-нибудь)

4

EasyMock.anyObject(String.class) является согласованью, это не String и не может быть использовано в качестве String для сравнения, кроме - соответствия что-то вроде следующего:

when(foo.bar(EasyMock.anyObject(String.class))).thenReturn("foo-bar") 

PS вам следует избегать использования new String(), когда это возможно; всегда лучше использовать "".

+0

разве в 'когда это()' метода Mockito, а не EasyMock один? – Vihar

+0

Строка была просто примером - реальное возвращаемое значение - объект ... – Lonzak

+0

да, это Мокито, я предполагаю, что это эквивалент в easymock, хотя – Karrde

0

У меня была эта же проблема с объектом AmazonSQSClient. Я попробовал .andReturn(new Object()), но получил ошибку несовместимого типа. Чтобы это исправить, просто возвращает новый объект типа метод ожидает:

expect(amazonSQSClient.getQueueAttributes(queueUrl, attributeNames)).andReturn(new GetQueueAttributesResult());