ruby on rails - rack_test - Capibara: ¿Cómo probar el título de una página?
rspec rails (8)
Agregué esto a mi ayudante de especificaciones:
class Capybara::Session
def must_have_title(title="")
find(''title'').native.text.must_have_content(title)
end
end
Entonces solo puedo usar:
it ''should have the right title'' do
page.must_have_title(''Expected Title'')
end
En una aplicación de Rails 3 utilizando Steak, Capybara y RSpec, ¿cómo puedo probar el título de la página?
Debería poder buscar el elemento de title
para asegurarse de que contiene el texto que desea:
page.should have_xpath("//title", :text => "My Title")
Desde la versión 2.1.0 de capibara, hay métodos en la sesión para tratar el título. Tienes
page.title
page.has_title? "my title"
page.has_no_title? "my not found title"
Entonces puedes probar el título como:
expect(page).to have_title "my_title"
De acuerdo con github.com/jnicklas/capybara/issues/863 lo siguiente también está funcionando con capybara 2.0 :
expect(first(''title'').native.text).to eq "my title"
Esto funciona en Rails 3.1.10, Capybara 2.0.2 y Rspec 2.12, y permite emparejar los contenidos parciales:
find(''title'').native.text.should have_content("Status of your account::")
Para probar el título de una página con Rspec y Capybara 2.1, podrías usar
expect(page).to have_title ''Title text''
otra opción es
expect(page).to have_css ''title'', text: ''Title text'', visible: false
Desde Capybara 2.1 el valor predeterminado esCapybara.ignore_hidden_elements = true
, y como el elemento title es invisible, necesita la opciónvisible: false
para que la búsqueda incluya elementos de página no visibles.
Probar el título de cada página se puede hacer de una manera mucho más fácil con 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
Solo necesita configurar el subject
en la page
y luego escribir una expectativa para el método del title
la página:
subject{ page }
its(:title){ should eq ''welcome to my website!'' }
En contexto:
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
it { should have_selector "title", text: full_title("Your title here") }