java - Wicket 中的测试表单响应

标签 java testing wicket

我正在使用 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/

相关文章:

java - 如何在 Wicket 中返回指向外部 URL 的链接?

java - 独特的标签计数器

testing - 是否有用于记录/监控系统测试的好工具?

java - 以 Wicket 形式处理多对多实体关系

typescript - 如何在 TestCafe 中全局处理错误

testing - 用于测试 Meteor 应用程序的 laika、RTD 和 Safety Harness 之间的主要区别是什么?

java - 为了在 Wicket 网页中正确调用 getString(String key) 函数,需要满足哪些要求?

java - 我需要让整个 Java 程序都可以访问一个变量

java - 如何在 Heroku 上使用 reSTLet 在某些 URL 上强制使用 SSL

java - 使用 Selenium Htmlunit Java 最终重定向 URL