在我的应用程序中,我有一个会话控制器。现在,我要测试仅在登录后才能访问的用户控制器。
我的问题是我该如何伪造会议。我已经尝试了很多,所以希望您现在能为我提供帮助:
应用程序控制器:
helper_method :current_user
def authenticate_user
current_user
if @current_user
return true
else
redirect_to(:controller => 'sessions', :action => 'new')
return false
end
end
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
用户控制器具有:
before_filter :authenticate_user
控制器测试:
describe "GET index" do
it "assigns all users as @users" do
user = FactoryGirl.create(:user)
@request.session[:user_id] = user.id
get 'users'
expect(@users.size).to eq(1)
end
end
我也尝试过session[:user_id] = user.id
调试(在get请求之后):
@current_user
总是零User.find(session[:user_id])
返回正确的用户 尝试controller
代替@request
:
user = FactoryGirl.create(:user)
controller.session[:user_id] = user.id
get 'users'
expect(@users.size).to eq(1)
另外,您是否@users
在测试中定义了变量?可能应该是expect(User.count).to eq(1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句