authlogic在使用selenium驱动程序时不使用capybara

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)

在每个之前.

有人帮我这个吗?

谢谢里克

Phi*_*ilT 5

我在这里发布了一个黄瓜解决方案:通过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或显然遵循注销链接(如果这在您的规范中更有意义).


jcn*_*ghm 3

我认为以下代码可以激活 authlogic:

Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
Run Code Online (Sandbox Code Playgroud)

话虽如此,我更喜欢定义一个实际进入登录表单、填写并登录的步骤。它速度较慢,但​​我很少手动运行整个集成测试套件,通常持续集成服务器会处理这个问题。

  • 仅当您的客户正在编写或至少正在阅读这些功能时,Cucumber 才有用(当然他们应该如此)。否则你只是添加另一层。 (3认同)
  • 我不想每次都使用登录表单;仅在实际测试登录表单时。否则,我不想在我的规范中添加额外的时间来完成我已经知道可行的步骤。 (2认同)