2014-02-28 57 views
0

使用硒給出爲什麼硒不能在我的數據庫中看到對象?

require 'spec_helper' 

describe "visit '/'" do 
    context "displays ", :driver => :selenium do 
    before :each do 
     FactoryGirl.create :restaurant, name: "John's Cafe" 
     visit '/' 
    end 
    context "content:" do 
     it "Restaurantly Spots!" do 
     expect(page).to have_content 'Restaurantly Spots!' 
     end 

     it "John's Cafe" do 
     expect(page).to have_content "John's Cafe" 
     end 
    end 
    end 
end 

水豚測試失敗的「have_content」「約翰的咖啡館」。

是水豚無法看到加塊之前,DB的數據庫對象?

我敢肯定的是,測試數據庫中有物體,但沒有得到視圖頁面上,查看頁面在發展接線正確,我更好奇,爲什麼這個測試不會通過。謝謝。

我的測試套件是基於avdi的博客文章 http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/

回答

0

有幾件事情配置,你可以嘗試: 一)「撬」寶石添加到您的Gemfile,然後你可以將binding.pry添加到您的測試代碼。例如:

it "John's Cafe" do 
    binding.pry 
    expect(page).to have_content "John's Cafe" 
end 

在這一點上,當你運行測試,你會看到一個控制檯(如IRB或者軌道控制檯),並有反省到您的應用程序。所以你可以看到內容是否在數據庫中。例如:

Restaurant.last 

這應該給你一個線索,如果餐廳得到保存到數據庫中。

一個問題,也第一次測試通過? 「Restaurantly Spots!」?

讓我知道這是否正常工作,或者您有更多的問題。

Mike Riley

+0

另一件事,你可能想要提取FactoryGirl.create從前做。你可以這樣做: let(:restaurant){FactoryGirl.create:restaurant,name:「John's Cafe」} 之前做過 –

+0

我試過那兩個已經是@mike pry的表示db已經正確保存了記錄在裏面。我不知道,我結束了在那裏我通過瀏覽器交互來創建對象略有不同的測試結構去,似乎是工作。謝謝 ! – John

+0

好的,真棒。很高興現在正在工作。 –

相關問題