2017-01-19 3 views
1

は、私はAjaxを経由して送信され、以下のようにフォームを、持っているとしますテストにApache WicketではフォームをAjaxの提出

import org.apache.wicket.request.mapper.parameter.PageParameters; 
import org.apache.wicket.markup.html.form.Form; 
import org.apache.wicket.ajax.AjaxRequestTarget; 
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; 
import org.apache.wicket.markup.html.WebPage; 

public class FormPage extends WebPage { 
    public FormPage(final PageParameters parameters) { 
     Form form = new Form("myForm"); 
     // Ajax submit 
     form.add(new AjaxFormSubmitBehavior("onsubmit") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target) { 
       super.onSubmit(target); // Breakpoint on this line 
      } 
     }); 
     add(form); 
    } 
} 

は今、私は、フォームをテストする必要があり、かつのonSubmitメソッドにブレークポイントを設定します。ここではテストコードです:

import org.apache.wicket.util.tester.FormTester; 
import org.apache.wicket.util.tester.WicketTester; 
import org.junit.Before; 
import org.junit.Test; 

public class TestFormPage { 
    private WicketTester tester; 

    @Before 
    public void setUp() { 
     tester = new WicketTester(new WicketApplication()); 
    } 

    @Test 
    public void homepageRendersSuccessfully() { 
     tester.startPage(FormPage.class); 
     tester.assertRenderedPage(FormPage.class); 

     FormTester formTester = tester.newFormTester("myForm"); 
     formTester.submit();   
    } 
} 

しかし、問題は、私はユニットテストを実行すると、ブレークポイントが設定されたラインに到達されることはありません、です。何が間違っているのだろうか?

答えて

1

このテストでは、次の行は通常のフォームを送信しますが、Ajax送信イベントは発生しません。イベントを送信するのAjaxを発射するために

formTester.submit(); 

以下に示すように、WicketTester#executeAjaxEventが、代わりに使用されるべきである:

import org.apache.wicket.util.tester.WicketTester; 
import org.junit.Before; 
import org.junit.Test; 

public class TestFormPage { 
    private WicketTester tester; 

    @Before 
    public void setUp() { 
     tester = new WicketTester(new WicketApplication()); 
    } 

    @Test 
    public void homepageRendersSuccessfully() { 
     tester.startPage(FormPage.class); 
     tester.assertRenderedPage(FormPage.class); 

     tester.executeAjaxEvent("myForm", "submit");  
    } 
} 

文献:

関連する問題