我知道这个问题已被多次回复,但现有的答案并没有解决我的问题。
我想为控制器运行我的rspec测试。我需要通过Authlogic验证用户。
正如你们许多人所说(在其他类似问题中),我添加了 spec_helper.rb 文件:
require "authlogic/test_case"
include Authlogic::TestCase
在 my events_controller_spec.rb 中的之前的和 activate_authlogic :
...
before :each do
activate_authlogic
user = FactoryGirl.create(:user)
UserSession.create(user)
end
...
但是运行rspec,我总是得到臭名昭着的错误消息:
Failure/Error: UserSession.create(user)
Authlogic::Session::Activation::NotActivatedError:
You must activate the Authlogic::Session::Base.controller with a controller object before creating objects
你能看出它上面有什么问题吗?
非常欢迎任何建议。
谢谢!
PS。
使用的版本: - 铁轨3.2 - rspec(2.11.0) - rspec-core(2.11.1)
答案 0 :(得分:3)
我不明白您是否找到了解决方案,但这是我用于Rspec控制器的代码。您可以在创建会话之前捕获无效用户的错误!
spec / spec_helper.rb
def log_in(user)
user.should_not be_nil
session = UserSession.create!(user, false)
session.should be_valid
session.save
end
规格/控制器/...
require 'spec_helper'
require 'authlogic/test_case'
describe xxxController do
setup :activate_authlogic
context "user logged" do
before(:each) do
@user = Factory(:user)
log_in(@user)
end
end
end
答案 1 :(得分:2)
尝试使用setup :activate_authlogic
或Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
代替activate_authlogic
,也许会有所帮助
答案 2 :(得分:0)
经过多次尝试后,我发现了更多问题:
抱歉“不太有用”的问题:)