适用于类数据类型的EasyMock匹配器

时间:2012-02-27 14:53:23

标签: java easymock

我正在做这个和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 个答案:

答案 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())));