我正在尝试嘲笑Enum:
public enum SomeEnum implements BaseEnum{
SOME_VALUE("Description", SomeClass.class);
private Class<? extends IConsignador> integracao;
private String descricao;
TipoIntegracao(String descricao, Class<? extends IConsignador> integracao){
this.descricao = descricao;
this.integracao = integracao;
}
@Override
public String getDescricao() {
return descricao;
}
public Class<? extends IConsignador> getIntegracao() {
return integracao;
}
}
我的模仿:
SomeEnum mock = createMock(SomeEnum.class);
expect(mock.getIntegracao()).andReturn( (Class<? extends IConsignador>) eq(ClassWithOutPublicConstructor.class ) );
replay(mock);
但日食说:
The method andReturn(Class<capture#1-of ? extends IConsignador>) in the type IExpectationSetters<Class<capture#1-of ? extends IConsignador>> is not applicable for the arguments (Class<capture#2-of ? extends IConsignador>)
他建议演员,但仍然不接受这个价值。
它能是什么?
答案 0 :(得分:9)
与其他嘲弄的东西一样,考虑从Enum中提取界面并直接模拟界面。模拟枚举是一个坏主意,因为它打破了枚举上静态和实例方法的一般契约(例如ordinal()
和values()
)。
对于EasyMock来说,EasyMock显然在有界通配符方面存在一些问题。尝试使用this syntax:
EasyMock.<Class<? extends IConsignador>>expect(
mock.getIntegracao())
.andReturn(ClassWithOutPublicConstructor.class);
您还在eq
留下了thenReturn
,EasyMock不喜欢。匹配器仅适用于expect
的参数。对不起,我以前没见过。