2011-11-04 39 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标签。将其更改为您将使用此配置测试的标签。希望这可以帮助