2012-05-18 17 views
11

Wenn ich so etwas wie <%= link_to "Help", help_path %> in der Ansichtsdatei habe, wie teste ich folgendes mit rspec?Testen von Links mit rspec?

  1. Es geht um help_path.
  2. Der Inhalt lautet "Hilfe".

Ich verwende derzeit Capybara.


bearbeiten

Während Antworten können unten arbeiten, ich denke, ich einen einfacheren Weg, dies zu tun gefunden.

describe "some link on whatever page" do 
    subject { page } 
    before { visit whatever_path } 
    it { should have_link('Help', href: help_path) } 
end 

Antwort

4

Wenn Sie Capybara verwenden dann

my_link = find(:css, "a:contains('Help')") 
my_link.click 

and get page status, should be 200 or simply check 


my_link.href 

Aber auch Sie konnten einfach Routen Angaben zu Ihren Integrationsdaten in rspec hinzuzufügen. Wie dies immer sicher zu sein, besteht diese Routen

describe HelpController do 

    it "should have proper routes" do 
    {:get => "/halp/772/parser/18/edit" }.should be_routable 
    {:post => "/halp/772/parser" }.should be_routable 
    {:delete => "/halp/772/parser/18" }.should be_routable   
    end 

end 
3

Verwenden have_tag Matcher:

require 'spec_helper' 

feature "Help" do 
    scenario "creation" do 
    visit help_path       # access your help path 
    page.should have_content("Help")  # verify content 
    end 
end 

Wenn Sie Hilfe beim Testen mit Capybara müssen Sie einige hier finden konnten, . Here ist ein Cheatsheet.

response.should have_tag("a[href$=#{help_path}]", :text => "Help") 

P.S. Hast du rails guides gelesen?

+3

have_tag ist nicht mehr gültig. Die Cheatsheet-Verbindung ist tot. have_selector ist wahrscheinlich der nächste Ersatz. http://guides.rubyonrails.org/testing.html#testing-views – IAmNaN