Soru Capybara: Bir sayfanın başlığı nasıl test edilir?


Steak, Capybara ve RSpec kullanarak bir Rails 3 uygulamasında sayfanın başlığını nasıl test edebilirim?


66
2018-02-26 20:06


Menşei




Cevaplar:


Sürümünden beri 2.1.0 capibarada başlık ile başa çıkmak için oturumda yöntemler vardır. Var

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

Böylece başlığı şu şekilde test edebilirsiniz:

expect(page).to have_title "my_title"

Göre github.com/jnicklas/capybara/issues/863 aşağıdaki da capybara ile çalışıyor 2.0:

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

98
2018-01-03 13:24





Bu Rails 3.1.10, Capybara 2.0.2 ve Rspec 2.12 altında çalışır ve kısmi içeriklerin eşleştirilmesini sağlar:

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

14
2018-02-06 20:14



Teşekkürler! Bunu maymun maymunu Capibara'ya kullandım, cevabımı aşağıya bakın. - Jake


İçin arama yapabilmeniz gerekir. title öğe, istediğiniz metni içerdiğinden emin olmak için:

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

13
2018-02-26 20:27



Hata / Hata alıyorum: page.should have_xpath ("// title", "home") yanlış argüman sayısı (2 için 3) - Nerian
Ve kod şöyledir: senaryo "Kullanıcı giriş yapmış ve ana sayfasını görebilir" ziyareti yapın ('/') page.should have_xpath ("// title", "home") end - Nerian
Ayy, ikinci parametrenin bir karma olması gerektiğini unuttu ... Düzeltilmiş cevabımı kontrol et. - Dylan Markow
İşe yarıyor! Teşekkürler :) - Nerian
Bu kod artık kapilbara 2 ile çalışmıyor: github.com/jnicklas/capybara/issues/863 - Mic92


Bunu özellik yardımcımın içine ekledim:

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

Sonra sadece kullanabilirim:

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

3
2018-02-28 21:50



Bu yardımcısı için güzel bir eklenti! - jpwynn


Her sayfanın başlığını test etmek, RSpec ile çok daha kolay bir şekilde yapılabilir.

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

2
2018-02-26 21:44



Bu, page.should have_xpath ("// title",: text => "My Title") sayfasından daha kolay mı? - Mike Blyth
Kontrolör testlerindeki görünümler, benim fincan çay değil. Pate unvanı doğrulaması için entegrasyon testleri (ve capybara) kullanıyorum. - Grimmo
capybara 2, sadece kabul eder: metin değil: parametre olarak içerik. Bir başlık etiketinin içeriği en son capibara ile kontrol edilemez: github.com/jnicklas/capybara/issues/863 - Mic92


Rspec ve Capybara 2.1 ile bir sayfanın başlığını test etmek için kullanabilirsiniz

  1. expect(page).to have_title 'Title text'

    başka bir seçenek

  2. expect(page).to have_css 'title', text: 'Title text', visible: false
    Capybara 2.1'den beri varsayılan Capybara.ignore_hidden_elements = trueve başlık öğesi görünmez olduğundan, seçeneğe ihtiyacınız var visible: false Arama için görünmeyen sayfa öğeleri dahil etmek.


2
2017-09-15 13:40





Sadece ayarlamak gerekir subject için page ve sonra sayfanın bir beklentisi title yöntem:

subject{ page }
its(:title){ should eq 'welcome to my website!' }

Bağlamında:

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

0
2018-02-21 19:31