ric*_*ick 5 selenium rspec ruby-on-rails authlogic capybara
我使用默认驱动程序与我的authlogic成员区域进行了所有的capybara测试,但是当我更改一个测试以使用selenium驱动程序,因为它有ajax,它给出了我的theis错误:
You must activate the Authlogic::Session::Base.controller with a controller object before creating objects
Run Code Online (Sandbox Code Playgroud)
事情正在使用authlogic的默认驱动程序,所以必须与selenium有关?
我在spec_helper中包含了Authlogic :: TestCase
activate_authlogic
domain.user_sessions.create(user)
Run Code Online (Sandbox Code Playgroud)
在每个之前.
有人帮我这个吗?
谢谢里克
我在这里发布了一个黄瓜解决方案:通过authlogic登录,而不必每次都填写表格
对于RSpec集成测试,它是类似的.
在你的spec_helper.rb:
require "authlogic/test_case"
RSpec.configure do |config|
...
config.include Authlogic::TestCase
ApplicationController.skip_before_filter :activate_authlogic
config.before(:each, :type => :request) do
activate_authlogic
UserSession.create(User.find_by_email!(email))
end
...
end
Run Code Online (Sandbox Code Playgroud)
显然,如果您的站点不是仅登录,您可能希望将config.before中的两行移动到特定测试中的before块中以获取登录的规范.如果您保持原样,您可以删除会话UserSession.find.destroy或显然遵循注销链接(如果这在您的规范中更有意义).
我认为以下代码可以激活 authlogic:
Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
Run Code Online (Sandbox Code Playgroud)
话虽如此,我更喜欢定义一个实际进入登录表单、填写并登录的步骤。它速度较慢,但我很少手动运行整个集成测试套件,通常持续集成服务器会处理这个问题。