2017-01-19 5 views
1

내가 아약스를 통해 제출 아래와 같이 형태가 있다고 가정테스트 아파치 개찰구에서 양식을 아약스 제출

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 제출 이벤트는 발생하지 않습니다. 아래 그림과 같이

아약스 이벤트를 제출 발사하기 위해
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");  
    } 
} 

참조 :