Тестирование ссылок с помощью 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
Ответ 2
Использовать совпадение have_tag
. Здесь - это cheatsheet.
response.should have_tag("a[href$=#{help_path}]", :text => "Help")
P.S. Вы читали направляющие рельсов?
Ответ 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
Ответ 4
click_link "Help"
Суть кубыбары: https://gist.github.com/zhengjia/428105