Тестирование ссылок с помощью rspec?

Если у меня есть что-то вроде <%= link_to "Help", help_path %> в файле вида, как проверить следующее с помощью rspec?

  • Он переходит в help_path.
  • Содержимое читает "Справка".

В настоящее время я использую capybara.


изменить

В то время как ответы ниже могут работать, я думаю, что нашел более простой способ сделать это.

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

Ответ 1

Если вы используете capybara, тогда

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

and get page status, should be 200 or simply check


my_link.href

Но вы также можете просто добавить спецификации маршрутов в свои спецификации интеграции в rspec. Подобно этому всегда быть уверенным, что эти маршруты существуют

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

Ваш файл может выглядеть так:

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

Если вам нужна помощь при тестировании с Capybara, вы можете найти здесь: Railscasts # 257 Request Specs и Capybara или Capybara repo в Github