68 votes

Capybara: Comment faire pour tester le titre d'une page?

Dans Rails 3 application à l'aide de Steak, Capybara et RSpec comment puis-je tester le titre de la page?

101voto

Lars Schirrmeister Points 945

Depuis la version 2.1.0 de capybara il existe des méthodes sur la session de traiter avec le titre. Vous avez

page.title
page.has_title? "my title"
page.has_no_title? "my not found title"

Ainsi, vous pouvez tester le titre comme:

expect(page).to have_title "my_title"

Selon github.com/jnicklas/capybara/issues/863 la suite est également travailler avec le capybara 2.0:

expect(first('title').native.text).to eq "my title"

14voto

jpwynn Points 5222

Cela fonctionne sous Rails 3.1.10, Capybara 2.0.2 et Rspec 2.12, et permettant de mettre en correspondance partielle du contenu:

find('title').native.text.should have_content("Status of your account::")

13voto

Dylan Markow Points 65796

Vous devriez être en mesure de rechercher l' title élément afin de s'assurer qu'il contient le texte que vous souhaitez:

page.should have_xpath("//title", :text => "My Title")

3voto

Jake Points 472

J'ai ajouté à mon spec helper:

class Capybara::Session
  def must_have_title(title="")
    find('title').native.text.must_have_content(title)
  end
end

Ensuite, je peux utiliser:

it 'should have the right title' do
  page.must_have_title('Expected Title')
end

2voto

CharlesJHardy Points 2701

Test du Titre de chaque page peut être fait dans un chemin beaucoup plus facile avec 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X