2016-02-22 34 views
0

這是第一次測試即時寫作需要:js => true,所以我安裝了硒。硒測試無法登錄

我總是能夠使用我之前創建的某些憑據進行登錄,但在我通過硒運行它們時無法登錄。

進行仔細檢查,看是否我還在創建我的用戶(招聘)

puts "RECRUITER NAME => #{Recruiter.first.email}" 

回報

RECRUITER NAME => [email protected] 

我總是把我的密碼 「testtesttest」

但總是無法登錄。 它使用不同的(空的?)數據庫嗎?我是否缺少一些必需的設置?

注意 =>如果刪除:js => true,那麼使用完全相同的文件登錄將會完美無缺。但不知怎的,它突破了這一步。

+0

您是否在transactional包裝中使用transactional_fixtures或DatabaseCleaner?默認情況下,集成規範是使用2個線程運行不同的連接,有一個monkeypatch可以修復它。要檢查您可以比較'Recruiter.first.email'的rspec和控制器代碼的輸出 – faron

回答

1

執行js測試時,被測試的應用程序在與測試不同的線程中運行,這意味着它們不再共享相同的數據庫連接 - 請參閱https://github.com/jnicklas/capybara#transactions-and-database-setup。有兩種方法可以強制這兩個線程共享連接,但它最終會在某些邊緣情況下變得不穩定,並限制在測試中特定時間您可以執行的數據庫訪問,而且實際上並非初學者想要處理的問題。更好/最簡單的解決方案是禁用事務性測試並使用截斷或刪除來管理數據庫狀態。最簡單的方法是使用database_cleaner並設置一個配置,將交換到每個測試所需的策略 - https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example