2012-05-18 36 views
11

Nếu tôi có một cái gì đó như <%= link_to "Help", help_path %> trong tệp xem, làm cách nào để kiểm tra những điều sau bằng cách sử dụng rspec?Kiểm tra các liên kết bằng rspec?

  1. Nó đi đến help_path.
  2. Nội dung đọc "Trợ giúp".

Tôi hiện đang sử dụng capybara.


chỉnh sửa

Trong khi câu trả lời dưới đây có thể làm việc, tôi nghĩ rằng tôi tìm thấy một cách đơn giản hơn để làm điều này.

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

Trả lời

4

Nếu bạn đang sử dụng Capybara sau đó

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

and get page status, should be 200 or simply check 


my_link.href 

Nhưng cũng có thể bạn có thể chỉ cần thêm các tuyến đường thông số kỹ thuật để thông số kỹ thuật tích hợp của bạn trong rspec. Như thế này để luôn chắc chắn các tuyến đường này tồn tại

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 
2

tập tin bạn có thể trông như thế này:

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 

Nếu bạn cần một số giúp đỡ với thử nghiệm với Capybara bạn có thể tìm thấy một số ở đây: Railscasts #257 Request Specs and Capybara hoặc Capybara repo at Github

3

Sử dụng have_tag khớp . Here là một cheatsheet.

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

P.S. Bạn đã đọc rails guides?

+3

have_tag không còn giá trị. Liên kết cheatsheet đã chết. has_selector có lẽ là sự thay thế gần nhất. http://guides.rubyonrails.org/testing.html#testing-views – IAmNaN

Các vấn đề liên quan