我一直在使用GWT MVP框架+ GWT开展一些小项目 编辑框架。我有视图接口与声明如下的字段:
@Path("field")
IsEditor<ValueBoxEditor<Long>> getField();
视图实现如下所示:
@UiField
IsEditor<ValueBoxEditor<Long>> field;
public IsEditor<ValueBoxEditor<Long>> getField(){
return field;
}
在我的活动中,我有足够的信息来对应视图和我的活动 做(在活动中)这样的事情:
view.getField.setEnable(true);
我必须做演员
((ValueBoxBase<Long>)view.getField()).setEnable(true);
之后我无法测试这个单元,因为在我的测试中我定义了View的行为,以便在(IsEditor<ValueBoxEditor<Long>>)
上返回Mock view.getFiled()
,结果我得到了:
java.lang.ClassCastException: com.google.gwt.editor.client.IsEditor$
$EnhancerByMockitoWithCGLIB$$e8c00c36 cannot be cast to
com.google.gwt.user.client.ui.ValueBoxBase
从Activity调用Views组件方法的最佳实践是什么 不做铸造?
答案 0 :(得分:0)
转换为HasEnabled而不是ValueBoxBase。
答案 1 :(得分:0)
您需要使用ValueBoxEditor适配器方法“of”:
@UiField ValueBoxBase<Long> field;
public ValueBoxEditor<Long> getField(){
return ValueBoxEditor.of(field);
}