Test form response in Wicket

淺唱寂寞╮ 提交于 2019-12-12 03:13:34

问题


I am using Wicket and I want to test whether submitting my form result in a success or "page not found" errors. How could I achieve this? Below is my code:

HTML Code

<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 Code

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);
  }
}

Below is the test-case that I am trying to write:

//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();

I want to click to submit the form and read the response of the submission to further process it.


回答1:


You can send form specifying which submitter to use like:

formTester.submit("save");

Then you can check the response getting it from tester:

String responseTxt = tester.getLastResponse().getDocument();

See user guide for more details.



来源:https://stackoverflow.com/questions/28952484/test-form-response-in-wicket

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!