gpt4 book ai didi

session - 使用 session 测试 Rails Controller

转载 作者:行者123 更新时间:2023-11-28 19:52:42 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 session Controller 。现在我想测试只有登录后才能访问的用户 Controller 。

我的问题是如何伪造 session 。我已经尝试了很多,所以我希望你现在能帮助我:

应用 Controller :

   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

用户 Controller 有:

before_filter :authenticate_user

Controller 测试:

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 请求之后):

  • save_and_open_page 让我看到登录页面。
  • @current_user 始终为 nil
  • 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)

关于session - 使用 session 测试 Rails Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24365505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com