2011-11-04 42 views
2

我正在用黃瓜/水豚進行一些測試。我有一種情況,用戶轉到主頁,填寫他/她的用戶名和密碼,然後單擊「Enter」。這應該登錄用戶。當使用默認的Capybara驅動程序rack_test時,這將起作用:用戶登錄並移動到其他頁面。使用Selenium驅動程序時,這根本不起作用。用戶提交他/她的用戶名和密碼,但沒有登錄。水豚司機Selenium沒有認證用戶,而機架測試做得很好

我說的是同樣的測試。唯一改變的是水豚司機。我也認爲知道我使用Authlogic作爲我的認證邏輯很重要。

你能幫我嗎?謝謝!

這是我的水豚配置文件(support/env.rb):

require 'cucumber/rails' 
require 'capybara/session' 
require 'capybara/dsl' 

Capybara.default_selector = :css 
Capybara.run_server = false 
ActionController::Base.allow_rescue = false 
Capybara.javascript_driver = :selenium 
Capybara.server_port = 3000 

Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do 
    Cucumber::Rails::World.use_transactional_fixtures = false 
    Capybara.reset_sessions! 
    DatabaseCleaner.strategy = :truncation, {:except => %w[widgets]} 
    DatabaseCleaner.start 
    activate_authlogic 
    Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self) 
end 

After('@no-txn,@selenium,@culerity,@celerity,@javascript') do 
    DatabaseCleaner.clean 
end 

Before('[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]') do 
    DatabaseCleaner.strategy = :transaction 
end 

回答

0

我有一個非常類似的問題,但this explanation我指出了正確的方向。 也是我的功能/支持/ env.rb看起來是這樣的:

require 'cucumber/rails' 

Capybara.run_server = false 
Capybara.default_selector = :css 
Capybara.server_port = 3000 
Capybara.default_driver = :selenium 

Cucumber::Rails::Database.javascript_strategy = :truncation 

ActionController::Base.allow_rescue = false 

DatabaseCleaner.strategy = :truncation 

Before('@wip') do 
ActiveRecord::Base.shared_connection = nil 
end 

注意,之前是塊只爲@wip標籤。將其更改爲您將使用此配置測試的標籤。希望這可以幫助