2012-02-02 53 views
0

如何才能最好地測試頁面結構完整性的完整性?如何測試帶RSpec的站點菜單的結構?

作爲示例,我想確保站點菜單具有所有必需的元素。它是建立與常規CSS格式,並具有元素,因爲這些:

<li><%= link_to "Some page", some_path %></li> 
... 
<li><%= link_to "Login", path_to_login_action %></li> 
<li><%= link_to "Register", path_to_registration_action %></li> 

或者是在一些這樣毫無意義呢? (仍在試圖開發測試風格有充分的瞭解)

+0

有關如何使用[水豚(http://railscasts.com/episodes/257-request-specs-and-capybara)? – Oleander 2012-02-02 01:42:40

回答

0

你可以使用assert_select方法:

describe "home page" do 
    it "diplays all menu elements" do 
    get "/home" 
    assert_select "ul.menu li" do 
     assert_select "a.first", "Some page" 
     assert_select "a.another-class", "Login" 
     assert_select "a.last", "Register" 
    end 
    end 
end 
在另一種情況下

,包括webratcapybara在你的Gemfile:

gem 'capybara' 
gem 'webrat' 

和使用have_selector方法:

describe "home page" do 
    it "diplays all menu elements" do 
    visit "/home" 
    within "ul.menu li" do 
     page.should have_selector("a.first", :text => "Some page") 
     page.should have_selector("a.another-class", :text => "Login") 
     page.should have_selector("a.last", :text => "Register") 
    end 
    end 
end 

瞭解更多關於Rspec的護欄:http://github.com/rspec/rspec-rails#readme(見「要求規格」一章)

+0

謝謝你Ilya! 是否需要這些類?或者我可以這樣測試: page.should have_selector(「a」,:text =>「Some page」) page.should have_selector(「a」,:text =>「Login」) page.should have_selector(「a」,:text =>「Register」) – 2012-02-03 19:08:28

+0

是的,您可以使用任何CSS選擇器:標記'a',類'.class',標識'#register_link'或它們的組合和鏈像'ul li一類'。見http://www.w3.org/TR/CSS2/selector.html – ilya 2012-02-04 09:35:01