Wie teste ich in einer Rails 3-Anwendung mit Steak, Capybara und RSpec den Titel der Seite?
ruby-on-rails
rspec
capybara
Nerian
quelle
quelle
Sie sollten in der Lage sein, nach dem
title
Element zu suchen , um sicherzustellen, dass es den gewünschten Text enthält:page.should have_xpath("//title", :text => "My Title")
quelle
page.should have_content('<title>Your Title</title>')
Ich habe dies meinem Spezifikationshelfer hinzugefügt:
class Capybara::Session def must_have_title(title="") find('title').native.text.must_have_content(title) end end
Dann kann ich einfach verwenden:
it 'should have the right title' do page.must_have_title('Expected Title') end
quelle
Das Testen des Titels jeder Seite kann mit RSpec viel einfacher durchgeführt werden.
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
quelle
Um den Titel einer Seite mit Rspec und Capybara 2.1 zu testen, können Sie verwenden
expect(page).to have_title 'Title text'
Eine andere Option ist
expect(page).to have_css 'title', text: 'Title text', visible: false
Seit Capybara 2.1 ist die Standardeinstellung
Capybara.ignore_hidden_elements = true
und da das Titelelement unsichtbar ist, benötigen Sie die Optionvisible: false
für die Suche, um nicht sichtbare Seitenelemente einzuschließen.quelle
Sie müssen nur die festlegen ,
subject
umpage
dann für die Seite eine Erwartung schreibentitle
Methode:subject{ page } its(:title){ should eq 'welcome to my website!' }
Im Zusammenhang:
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
quelle
it { should have_selector "title", text: full_title("Your title here") }
quelle