2013-10-08 57 views
0

我在請求/ pages_spec.rb這兩項測試Rspec的have_link失敗的地方have_selector通過

pages_spec.rb

require 'spec_helper' 

describe "Pages" do 
    subject { page } 
    before { visit root_path } 

    describe "Home page" do 
     it { should have_selector('a', text: 'Post your property')} 
     it { should have_link('Post your property', href: new_apartment_path)} 
    end 
end 

的第一個測試通過,並且第二個失敗說:

expected link "Post your property" to return something 

這是html:

<a href="/en/apartment/new">Post your property</a> 

任何想法爲什麼測試失敗?謝謝! Uri

+0

你肯定'new_apartment_path'設置是否正確?如果不正確,第一個測試會通過,第二個測試會失敗,如您所見。 –

+0

我有一個:locale前綴到我的網址。也許這是造成問題的原因?例如,爲了使用user_path,我必須將它傳遞爲:user_path(:id => user.id)以使其工作。我不確定如何通過new_apartment_path做這個解決方法,雖然... –

+0

您可以運行測試'it {should have_link('Post your property',href:「/ en/apartment/new」)}'確認問題是'new_apartment_path'? –

回答

1

也許您的should have_link的背景是錯誤的。您可以使用下面的代碼使用水豚寶石的save_and_open_page進行測試,並在該測試點檢查html。

require 'spec_helper' 

describe "Pages" do 
    subject { page } 
    before { visit root_path } 

    describe "Home page" do 
     it { should have_selector('a', text: 'Post your property')} 
     save_and_open_page 
     it { should have_link('Post your property', href: new_apartment_path)} 
    end 
end 
0

感謝您的幫助!這是什麼結束瞭解決它:

問題是與命名的路由new_apartment_path不被識別,因爲i18n。

什麼解決它添加一行:

let(:locale) { 'en' } 

,並改變了測試:

it { should have_link('Post your property', href: new_apartment_path(locale))}