Капибара: Как проверить название страницы?
в приложении Rails 3 с использованием Steak, Capybara и RSpec как проверить заголовок страницы?
8 ответов:
начиная с версии 2.1.0 капибары есть методы на сессии, чтобы иметь дело с названием. У вас есть
page.title page.has_title? "my title" page.has_no_title? "my not found title"
Так что вы можете проверить название, как:
expect(page).to have_title "my_title"
согласно github.com/jnicklas/capybara/issues/863 следующее также работает с капибарой 2.0:
expect(first('title').native.text).to eq "my title"
это работает под Rails 3.1.10, Capybara 2.0.2 и Rspec 2.12 и позволяет сопоставлять частичное содержимое:
find('title').native.text.should have_content("Status of your account::")
вы должны быть в состоянии искать
title
элемент, чтобы убедиться, что он содержит текст, который вы хотите:page.should have_xpath("//title", :text => "My Title")
я добавил Это к моей спецификации помощника:
class Capybara::Session def must_have_title(title="") find('title').native.text.must_have_content(title) end end
тогда я могу просто использовать:
it 'should have the right title' do page.must_have_title('Expected Title') end
тестирование заголовка каждой страницы можно сделать гораздо проще с помощью RSpec.
require 'spec_helper' describe PagesController do render_views describe "GET 'home'" do before(:each) do get 'home' @base_title = "Ruby on Rails" end it "should have the correct title " do response.should have_selector("title", :content => @base_title + " | Home") end end end
чтобы проверить название страницы с помощью Rspec и Capybara 2.1, вы можете использовать
expect(page).to have_title 'Title text'
другой вариант:
expect(page).to have_css 'title', text: 'Title text', visible: false
Начиная с Capybara 2.1 значение по умолчаниюCapybara.ignore_hidden_elements = true
, и поскольку элемент заголовка невидим, вам нужна опцияvisible: false
для поиска, чтобы включить невидимые элементы страницы.
вам просто нужно установить
subject
доpage
а затем написать ожидание для страницыtitle
способ:subject{ page } its(:title){ should eq 'welcome to my website!' }
в контексте:
require 'spec_helper' describe 'static welcome pages' do subject { page } describe 'visit /welcome' do before { visit '/welcome' } its(:title){ should eq 'welcome to my website!'} end end