2014-05-23 28 views
0

這裏是我的部分代碼:導軌 - 水豚不會處理ERB

<% @birds.each do |bird| %> 
    <p> 
    <%= "#{bird.name} , #{bird.genus} #{bird.species}"%> 
    </p> 
<% end %> 

這裏是我的RSpec的代碼,測試網頁:

let(:bird) { FactoryGirl.create(:bird) } 
before { visit birds_path } 
it { should have_text("#{bird.name}") } 

該測試失敗:

Failure/Error: it { should have_text("#{bird.name}") } 
    expected #has_text?("Bird_1") to return true, got false 

有誰知道爲什麼發生這種情況,以及如何解決這個問題? 謝謝

+0

你可以使用'save_and_open_page'來調試出錯的地方 - https://gist.github.com/zhengjia/428105#file-capybara-cheat-sheet-L55 –

+0

它說'未定義的局部變量或方法'save_and_open_page'' – SalmonKiller

回答

0

讓你被稱爲第一次嘗試訪問鳥。由於您已經通過before塊訪問過該頁面,因此該鳥尚未創建。

請嘗試以下方法:

it "should have bird" do 
    bird = FactoryGirl.create(:bird) 
    visit bird_path 
    expect(page).to have_content(bird.name) 
end 
+0

大聲笑。我們的帖子之間有8秒的差異。 – SalmonKiller

0

的問題顯然是FactoryGirl沒有完成創建對象,所以對象沒有在頁面上顯示出來。取而代之的

let(:bird) { FactoryGirl.create(:bird) } 

它應該是

let!(:bird) { FactoryGirl.create(:bird) } 

感謝您的建議,但。