EasyMock 3.2:为将泛型作为参数的方法创建expect()

时间:2014-04-06 01:27:34

标签: easymock

在我的一个模拟类中,我需要为具有类似于此的签名的方法创建expect

public <T extends Object> T createInitInstance(Class<T> cast)

根据cast参数,我返回的内容会有所不同。它将是cast指定类型的另一个模拟对象。我尝试过的一些方法是:

expect(core.createInitInstance(anyObject(QueryParserPlugin.class))).andReturn(queryPlugin);

expect(core.createInitInstance(isA(QueryParserPlugin.class))).andReturn(queryPlugin);

expect(core.createInitInstance(isA(Class.class))).andReturn(queryPlugin);

其中queryPlugin是类QueryParserPlugin的模拟。前两个给出了编译器错误,说:

required: Class<T>
found: QueryParserPlugin

第三个编译,但总是返回null,可能是因为它与期望不匹配,并且模拟是使用createNiceMock创建的。

知道如何正确指定参数吗?

1 个答案:

答案 0 :(得分:2)

这最终成为一个Java问题,而不是EasyMock问题,但这是有效的:

expect(core.createInitInstance(isA(QueryParserPlugin.class.getClass()))).andReturn(queryPlugin);