ericj
ericj

Reputation: 2301

How to test an ajax form? With FormTester?

I have an ajax form which looks like

Form<Void>form=new Form<Void>("form");
add(form);
name=new TextField<String>("name");
form.add(name);
age=new TextField<Integer>("age");
form.add(age);
submit=new AjaxButton("submit") {
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        result.setDefaultModelObject(s);
        target.add(result);
    }
};
form.add(submit);

How do I test such a form, with FormTester, or in another way?

Upvotes: 0

Views: 331

Answers (2)

ericj
ericj

Reputation: 2301

Indeed, I can use FormTester, but I must do

wicketTester.executeAjaxEvent("form:submit", "click");

instead of

formTester.submit();

Also, because FormTester puts the values given with .setValue() in the post parameters, we can let BaseWicketTester.serializeFormRequest do this also, so we do not need FormTester:

wicketTester.getComponentFromLastRenderedPage("form:name").setDefaultModelObject("foo");
wicketTester.getComponentFromLastRenderedPage("form:age").setDefaultModelObject("7");
wicketTester.executeAjaxEvent("form:ajx", "click");

Upvotes: 0

svenmeier
svenmeier

Reputation: 5681

Just use FormTester, it will take care of simulating an Ajax request:

formTester.submit(button);

Upvotes: 1

Related Questions