我正在尝试在使用 Authlogic 和 ActiveRecord SessionStore 的 Rails 3.1 应用程序上编写一个简单的集成测试,但我碰壁了。
首先,我尝试了一种经典方法:在确保该require "authlogic/test_case"
行已经在我们的行中之后,test_helper.rb
我编写了一个 setup 方法,该方法调用activate_authlogic
然后用于UserSession(@user)
创建会话。
这确实创建了UserSession.find
一个get
会话(UserSession.find
由nil
我也尝试过 POST 电子邮件/密码,但这似乎只有在我将会话存储更改回 cookie_store 时才有效(这是我从这个评论中发现的)。
将会话存储切换为CookieStore
仅用于测试是一种选择,但有些测试已经依赖于 ActiveRecord 存储。
有什么方法可以只为一次测试切换会话存储吗?我缺少这个问题的其他解决方案吗?
require 'test_helper'
class ProtectedTest < ActionController::IntegrationTest
def setup
activate_authlogic
@user = Factory(:user, :roles => 'user')
UserSession.create(@user)
end
def test_protected
https!
get '/protected'
assert_response :success
end
end