Eclipse Scout:form.doOk()不调用ModifyHandlerexecStore()
我正在尝试为我的Eclipse Scout应用程序编写集成测试 我的测试方法如下所示:Eclipse Scout:form.doOk()不调用ModifyHandlerexecStore(),eclipse,eclipse-scout,Eclipse,Eclipse Scout,我正在尝试为我的Eclipse Scout应用程序编写集成测试 我的测试方法如下所示: AForm form = new AForm(); form.setPersonId(3L); form.startNew(); form.doOk(); //assertions on the form. AForm form = new AForm(); form.setPersonId(3L); form.startNew(); Assert.assertEquals("isSaveNeeded [1
AForm form = new AForm();
form.setPersonId(3L);
form.startNew();
form.doOk();
//assertions on the form.
AForm form = new AForm();
form.setPersonId(3L);
form.startNew();
Assert.assertEquals("isSaveNeeded [1]", false, form.isSaveNeeded());
form.touch(); // or form.getXyField().setValue(..);
Assert.assertEquals("isSaveNeeded [2]", true, form.isSaveNeeded());
form.doOk();
//assertions on the form.
我的问题是没有执行ModifyHandler所在的AForm.ModifyHandlerexecStore中的代码。为了确保这一点,我修改了实现:我抛出了一个IllegalStateException:
public class ModifyHandler extends AbstractFormHandler {
@Override
protected void execLoad() throws ProcessingException {
IAService service = SERVICES.getService(IAService.class);
AFormData formData = new AFormData();
exportFormData(formData);
formData = service.load(formData);
importFormData(formData);
setEnabledPermission(new UpdateAPermission());
}
@Override
protected void execStore() throws ProcessingException {
throw new IllegalStateException("Exception for Unit Test: execStore()");
// IAService service = SERVICES.getService(IAService.class);
// AFormData formData = new AFormData();
// exportFormData(formData);
// formData = service.store(formData);
}
}
为什么不调用execStore?您遇到了一个问题
仅当表单中至少有一个值发生了更改时,Eclipse Scout才会执行execStore
准确地说:
AbstractFormHandlerexecLoad期间设置的值被视为初始值
AbstractFormHandlerexecPostLoad期间设置的值被视为修改后的值。
当用户与表单交互时,他在PostLoad事件之后
要将表单标记为已修改,可以使用IFormtouch
您可以将单元测试更改为以下内容:
AForm form = new AForm();
form.setPersonId(3L);
form.startNew();
form.doOk();
//assertions on the form.
AForm form = new AForm();
form.setPersonId(3L);
form.startNew();
Assert.assertEquals("isSaveNeeded [1]", false, form.isSaveNeeded());
form.touch(); // or form.getXyField().setValue(..);
Assert.assertEquals("isSaveNeeded [2]", true, form.isSaveNeeded());
form.doOk();
//assertions on the form.
断言是不必要的。他们在这里只是为了说明情况
如果iFormisSaveeded返回true,则将执行execStore实现