我正在使用 Wicket,我想测试提交表单是成功还是“找不到页面”错误。我怎么能做到这一点?下面是我的代码:
HTML代码
<form wicket:id="form" enctype='multipart/form-data'>
<div wicket:id="feedback"></div>
<input type="file" wicket:id="file"></input>
<br></br>
<span wicket:id="progress"></span>
<input wicket:id="save" type="submit" value="Save"></input>
<input wicket:id="cancel" type="submit" value="Cancel"></input>
</form>
Java代码
public class TestPage extends WebPage {
private static final long serialVersionUID = 1L;
private FeedbackPanel feedback;
// TODO Add any page properties or variables here
/**
* Constructor that is invoked when page is invoked without a session.
*
* @param parameters
* Page parameters
*/
public TestPage(final PageParameters parameters) {
Form<?> form = new Form<String>("form");
add(form);
feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupPlaceholderTag(true);
form.add(feedback);
FileUploadField file = new FileUploadField("file");
file.setRequired(false);
form.add(file);
UploadProgressBar progress = new UploadProgressBar("progress", form);
form.add(progress);
AjaxFallbackButton cancel = new AjaxFallbackButton("cancel", form) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
Session.get().getFeedbackMessages().add(this,
"Everything is ok", FeedbackMessage.INFO);
target.addComponent(form);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
target.addComponent(feedback);
}
};
cancel.setDefaultFormProcessing(false);
form.add(cancel);
AjaxFallbackButton save = new AjaxFallbackButton("save", form) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
Session.get().getFeedbackMessages().add(this,
"Everything is ok", FeedbackMessage.INFO);
target.addComponent(form);
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
super.onError(target, form);
target.addComponent(feedback);
}
};
form.add(save);
}
}
下面是我正在尝试编写的测试用例:
//start and render the test page
tester.startPage(TestPage.class);
//assert rendered page class
tester.assertRenderedPage(TestPage.class);
FormTester formTester = tester.newFormTester("form");
formTester.submit();
tester.assertNoErrorMessage();
我想点击提交表单并阅读提交的回复以进一步处理它。
最佳答案
您可以发送指定要使用的提交者的表单,例如:
formTester.submit("save");
然后您可以检查从测试人员那里得到的响应:
String responseTxt = tester.getLastResponse().getDocument();
参见 user guide了解更多详情。
关于java - Wicket 中的测试表单响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952484/