2011-05-01 23 views
2

我正在加強我的RoR應用程序的RSpec測試。我想要一個簡單的方法來驗證點擊頁面上的每個鏈接是否得到正確處理,即生成一個可識別的路由到控制器,並在控制器中有一個方法來爲其提供服務。RoR,RSpec:要驗證頁面上的每個鏈接都可以被維護

我可以爲每個頁面編寫特定的測試,但最好讓RSpec幫助函數自動查找頁面上的所有鏈接並驗證每個頁面。 FWIW,假設所有鏈接都在我的域中(沒有鏈接到外部網站)是安全的。

而不是通過列舉所有我嘗試過的東西來膨脹這個問題,我會問:你會怎麼做?看起來像一個常見和有用的功能。

  • FF

回答

1

我會使用水豚概率...

1. make list of pages 
2. For each page 
3.  Visit page 
4.  get all links using xpath (included in capybaara) 
5.  For each link 
6.   do a Rspec test get url; response.should be_ok 
+0

我已經有引入nokogiri - 我真的需要水豚只是爲了獲得一個網頁上的鏈接? – 2011-05-02 15:48:36

+0

不,可能不是。我只是說,因爲它已經集成到RSpec中並且可能會降低WTF因子。也就是說,Capybara在內部使用Nokogiri,但我不知道如何直接抓取與Nokogiri的鏈接並將其與Rspec整合起來。它可能是透明的,我只是從來沒有嘗試過..所以我不能說 – noli 2011-05-03 05:34:13

+0

讓我補充到我的原始答案,也許你可以使用一個站點地圖寶石列出你的應用程序中的所有網頁,並使更容易步驟1 – noli 2011-05-03 05:35:27

0

這種事情屬於在集成測試,你既可以在RSpec的或黃瓜寫。測試自己的鏈接價值有限 - 它會告訴你鏈接是否被破壞,但它不會告訴你鏈接是否指向錯誤的地方。

黃瓜,你可以寫這樣的:

Given I am on the home page 
When I follow "Buy Stuff" 
Then I should be on the shopping page 
+0

一致認爲這是集成測試。不同意這樣做的價值有限:它會立即突出顯示缺失的路線,缺少靜態頁面等。我的問題的癥結在於如何自動獲取頁面上的所有鏈接,單擊每個鏈接並確保沒有任何結果錯誤。 – 2011-05-02 15:46:05

相關問題