В приложении Rails 3 с использованием Steak, Capybara и RSpec, как проверить заголовок страницы?
Капибара: Как проверить название страницы?
Ответ 1
Поскольку версия 2.1.0 capybara, на сеансе есть методы для работы с заголовком. У вас
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, также работает с capybara 2.0:
expect(first('title').native.text).to eq "my title"
Ответ 2
Это работает под Rails 3.1.10, Capybara 2.0.2 и Rspec 2.12 и позволяет сопоставлять частичное содержимое:
find('title').native.text.should have_content("Status of your account::")
Ответ 3
Вы должны иметь возможность искать элемент title
, чтобы убедиться, что он содержит нужный текст:
page.should have_xpath("//title", :text => "My Title")
Ответ 4
Тестирование заголовка каждой страницы может быть выполнено гораздо проще с помощью 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
Ответ 5
Я добавил это моему помощнику spec:
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
Ответ 6
Чтобы проверить название страницы с помощью 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
, чтобы поиск включал не видимые элементы страницы.
Ответ 7
Вам просто нужно установить 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
Ответ 8
it { should have_selector "title", text: full_title("Your title here") }