我有一個與我的硒測試的問題,它看起來像測試數據不會被添加到正確的環境或硒試圖讀取錯誤的。硒與水豚失敗測試
的下面測試通過,而不:js => true
但與它失敗
it "allows the user to create a new test", :js => true do
FactoryGirl.create(:user, email:'[email protected]', password:'passw0rd')
p 'Here'
p User.all
visit '/' # Login view
fill_in "email", with: '[email protected]'
fill_in "password", with: "passw0rd"
click_button 'Login'
expect(current_path).to eq '/home'
end
,因爲用戶不獲取登錄並因此沒有達到「/家」的測試失敗。我加了打印輸出,以查看用戶是否實際上被添加到該數據庫中,這是...
"Here"
#<ActiveRecord::Relation [#<User id: 1, email: "[email protected]", password: "$2a$10$JQBuNH95JWDjCTx0OH7JMuxcO.0XgAz6wtYc/2G8pps...", created_at: "2014-08-27 11:34:44", updated_at: "2014-08-27 11:34:44">]>
然而,當我又增加了打印出我login_controller
def create
p 'Here 2'
p User.all
... # User authenitcation
end
控制檯看起來像
"Here"
#<ActiveRecord::Relation [#<User id: 1, email: "[email protected]", password: "$2a$10$JQBuNH95JWDjCTx0OH7JMuxcO.0XgAz6wtYc/2G8pps...", created_at: "2014-08-27 11:34:44", updated_at: "2014-08-27 11:34:44">]>
"Here 2"
#<ActiveRecord::Relation []>
因此,對於一些原因,在試驗所添加的用戶不是在驗證正在進行時的數據庫,導致我認爲硒是廁所國王在不同的環境下,即應該在考慮測試時的發展?
如果它幫助這裏是我的一些spec_helper
文件與database_cleaner配置
...
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
...
end
就如何解決這一問題有什麼想法?我不知道Selenium是看錯了環境還是我的database_cleaner配置錯了
這絕對不是一個計時問題,因爲我已經改變了Capybara的默認等待時間,並且在運行時觀察測試(如果登錄不成功,就會顯示一條消息)。如果Selenium測試仍然沒有從相同的環境中讀取,即當'login_controller'執行'create'動作時'測試'?如果不是,你應該如何測試一個頁面,JS依賴於數據庫中的記錄? – SteWoo 2014-08-27 19:28:01
我假設你已經嘗試單獨運行測試?您可以嘗試從混合中清除數據庫清理器,並在每次運行spec之後通過運行'bundle exec rake db:test:prepare'手動重置測試數據庫。 – dleve123 2014-08-28 00:10:37
是的,我正在運行它自己的。我刪除了數據庫清理器配置,並在事務性和非事務性夾具之間切換,但沒有運氣。我也嘗試了很多不同的數據庫清潔配置組合,但仍然沒有運氣。問題似乎是在測試中打印出數據時,數據在模型中,但是在控制器中打印輸出時模型中沒有數據。任何想法爲什麼? – SteWoo 2014-08-28 09:15:18