EasyMock matcher для класса данных - PullRequest
2 голосов
/ 27 февраля 2012

Мне снятся кошмары с синтаксисом этого и easymock:

public void foo(Class<?> clazz);

EasyMock.expects(object.foo(EasyMock.isA(???)));

Что я должен указать, если мой аргумент - String.class?Сначала я подумал:

EasyMock.isA(((Class<?>)(String.class)).getClass())

Тем не менее, когда я делаю вызов foo (String.class), я получаю:

java.lang.IllegalStateException: missing behavior definition for the preceding method call:

Ответы [ 2 ]

6 голосов
/ 27 февраля 2012

Вы пытаетесь проверить универсальный тип, который все равно будет удален во время выполнения.

Вместо этого используйте объект захвата:

Capture<Class<?>> classCapture = new Capture<Class<?>>();
EasyMock.expect(object.foo(EasyMock.capture(classCapture)));

// ... other test setup ...

Assert.assertEquals(classCapture.getValue(), String.class);
1 голос
/ 27 февраля 2012

Я думаю, что следующее, как и ожидание, будет работать, если вы не хотите использовать Capture:

EasyMock.expects(object.foo(EasyMock.isA(String.class.getClass())));
...