gpt4 book ai didi

ruby-on-rails - session 哈希不会在 rspec 测试中持续存在

转载 作者:数据小太阳 更新时间:2023-10-29 07:53:24 24 4
gpt4 key购买 nike

在我的 people_controller_spec.rb 中有

before(:each) do
@office = FactoryGirl.create(:office)
@organization = FactoryGirl.create(:organization)
@user = FactoryGirl.create(:user, organization: @organization)

@request.session['user_id'] = @user.id
@request.session['current_organization_id'] = @user.organization.id
end

我有这个 application_controller.rb

class ApplicationController < ActionController::Base

protect_from_forgery

private

def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end

def current_organization
if session[:current_organization_id]
Organization.find(session[:current_organization_id])
else
@current_organization ||= Organization.find(current_user.organization_id)
end
end

helper_method :current_user
helper_method :current_organization
end

session 哈希似乎不会在 application_controller.rb 中持续存在,这就是为什么我得到这些类型的测试错误,其中 application_controller.rb 中的 @current_user 为 nil

  6) PeopleController index sorts all people alphabetically by first_name
Failure/Error: get :index, {search: {meta_sort: "first_name.asc"}}, valid_session
NoMethodError:
undefined method `organization_id' for nil:NilClass
# ./app/controllers/application_controller.rb:15:in `current_organization'
# ./app/controllers/people_controller.rb:107:in `get_orgs'
# ./spec/controllers/people_controller_spec.rb:71:in `block (3 levels) in <top (required)>'

我已经做了一切,但失败了。

我使用 rails (3.2.9) 和 rspec-rails 2.12.2

看到这个后我解决了这个问题 Devise Test Helper - sign_in does not work

我刚刚删除了所有“valid_session”方法调用。

最佳答案

在你的 before :each block 中设置 session :

session[:user_id] = @user.id
session[:current_organization_id] = @user.organization.id

这使用了 rspec Controller 宏提供的 session 助手。此外,我不确定 session 是否是 HashWithIndifferentAccess,如 params,但无论哪种方式,最好继续使用相同的 key 类型。

关于ruby-on-rails - session 哈希不会在 rspec 测试中持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892413/

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