2014-05-14 41 views
1

我正在爲wicketproject構建單元測試,並且在測試下載函數時遇到問題。我從具有搜索表單的頁面開始。如何爲Wicket DownloadLink編寫單元測試?

wicketTester.startPage(SearchPage.class); 
// set values for FormTester formTester 
formTester.submit(); 

提交後我得到一個帶有ListView的頁面,到目前爲止非常好。

tester.assertRenderedPage(ResultPage.class); 
// test some Labels in listitems 

現在我想將列表導出到csv並檢查文件。還在這裏確定

tester.clickLink("exportlink"); 
tester.assertContains("part,of,csv,to,test;"); 

現在我想「回去」並單擊listitem轉到搜索結果的詳細信息。我無法找到如何獲取列表的上一頁,然後觸發listitem上的ajaxevent。

tester.executeAjaxEvent("aansluitngrow:1", "onclick"); 

感謝您的幫助:)

回答

0

我不知道,如果你的單元測試的方法是正確的。每個單元測試都應該測試一個單元的單個特徵,所以在這種情況下,它應該是: 1.測試提交表單; 2.測試導出鏈接 3.測試ajax事件; 等

這些點中的每一個都應該有自己的單元測試,因爲它們都是單個工作單元。這樣你可以肯定,這些單位的任何組合也將起作用。而如果通過這些單位測試單一路徑,則無法確保如果路徑中的某個元素不同,您仍然會得到正確的結果。

此外,「返回」不是您的代碼庫的功能;你不應該把它包含在你的測試中,你應該假設任何提供後端功能的東西都已經過測試。

因此,我相信你甚至不需要'返回';您應該對該功能進行新的單元測試,其中起點爲ResultPage,其中包含正確呈現的項目列表(在另一個測試中確保正確的呈現),您將在其上執行自定義ajax事件。

+0

所有「真實」單元測試已經就位。這更像是一個系統測試。我正在使用它來重新創建一些場景來測試這些組件是否也可以共同工作。當然,我可以把它和模擬/存根輸入分開,但是這個測試應該比這個要多一點。我也在這裏測試邏輯。 – Martin

+0

夠公平的。我不確定這是否可行,但您可以嘗試通過['BaseWicketTester#getLastRenderedPage()'](http://ci.apache.org/projects/wicket/apidocs) /6.0.x/org/apache/wicket/util/tester/BaseWicketTester.html#getLastRenderedPage%28%29),並測試鏈接後,您可以使用['BaseWicketTester#startPage(T)'](http:// ci。 apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/util/tester/BaseWicketTester.html#startPage%28T%29)來模擬'後退'功能。我不確定你是否可以做任何比這更具體的事情。 – WiseTree

相關問題