我正在做这个和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:
答案 0 :(得分:6)
您正在尝试验证将在运行时擦除的泛型类型。
改为使用捕获对象:
Capture<Class<?>> classCapture = new Capture<Class<?>>();
EasyMock.expect(object.foo(EasyMock.capture(classCapture)));
// ... other test setup ...
Assert.assertEquals(classCapture.getValue(), String.class);
答案 1 :(得分:1)
如果您不想使用Capture,我认为以下内容也可以作为期望声明:
EasyMock.expects(object.foo(EasyMock.isA(String.class.getClass())));