2013-02-18 56 views
1

我無法兩次發送wickettester表單並驗證第一次給出的錯誤消息在第二次提交時被刪除。Wickettester對兩份提交的表格相同

在下面給出的代碼中,我首先提交一個空的表單,它提供了一個錯誤信息。 然後,我想提交相同的表單,但輸入的是有效的信息,並斷言從第一個出發的錯誤消息現在已被刪除。

該測試似乎正常運行,但是當我更改測試下的Java代碼,以便它不會在提交搜索時正確刪除錯誤消息,第二次測試仍然斷言沒有錯誤消息......第二次提交的測試似乎是從第一次提交的同一位置開始的,因此第一次提交併未參與我的測試。

@Test 
public void assertThatErrorMessagesAreRemoved() { 
    PageParameters pp = new PageParameters(); 
    // given 
    WicetTester tester = new WicketTester(new MyApplication()); 
    tester.startComponentInPage(new MyPanel("myPanel", pp)); 

    //when 
    FormTester form = tester.newFormTester("panel:formcontainer:form"); 
    form.submit(); 

    // then 
    tester.assertErrorMessages("searchTerm.Required_value"); 

    //and given 
    form = tester.newFormTester("panel:formcontainer:form"); 
    form.setValue("searchTerm", "a"); 

    //when 
    form.submit(); 

    // then 
    tester.assertNoErrorMessage(); 
} 
+0

它檢票6. – staffang 2013-02-18 10:46:57

+0

下運行我找到了解決我的問題由我自己:) 的問題是,我沒有添加FeedbackPanel關於ajax回報目標,'target.add(feedbackpanel);'。我在第二次提交後看到的錯誤未在響應中發送,WicketTester未找到它。但是由於我沒有在Ajax調用的目標上添加FeedbackPanel,所以html沒有被重新渲染,並且錯誤仍然可見。 – staffang 2013-02-18 13:30:23

回答

1

正如上面的評論:

我發現我自己解決我的問題。問題在於我沒有在ajax返回目標target.add(feedbackpanel);上添加FeedbackPanel。我在第二次提交後看到的錯誤未在響應中發送,WicketTester未找到它。但是由於我沒有在Ajax調用的目標上添加FeedbackPanel,所以html沒有被重新渲染,並且錯誤仍然可見。