加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 模型测试中未定义的局部变量或方法’session’

发布时间:2020-12-16 19:05:34 所属栏目:百科 来源:网络整理
导读:我正在创建一个 Ruby on Rails应用程序,并且我正在尝试运行涉及我的User模型的测试,以查看“记住我”功能是否有效.我使用Rails的内置cookie散列来存储cookie,并使用会话散列来存储当前会话.我运行各种测试(集成,模型和控制器),我使用会话变量,但由于某种原因
我正在创建一个 Ruby on Rails应用程序,并且我正在尝试运行涉及我的User模型的测试,以查看“记住我”功能是否有效.我使用Rails的内置cookie散列来存储cookie,并使用会话散列来存储当前会话.我运行各种测试(集成,模型和控制器),我使用会话变量,但由于某种原因,在这种特殊情况下,它不被识别.
NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8>

错误发生在下面的log_in_as方法中的else块中:

test_helper.rb中

...

def log_in_as(user,options = {})
  password = options[:password] || 'password'
  remember_me = options[:remember_me] || '1'

  if integration_test?
    post login_path,session: { email: user.email,password: password,remember_me: remember_me }
  else
    session[:user_id] = user.id
  end
end

我在用户测试中调用log_in_as;这两个测试都失败了.

user_test.rb

require 'test_helper'
...
test "login with remembering" do
  log_in_as(@user,remember_me: '1')
  assert_not_nil cookies['remember_token']
end

test "login without remembering" do
  log_in_as(@user,remember_me: '0')
  assert_nil cookies['remember_token']
end
...

当我从帮助程序中删除该行代码时,会抛出一个错误,指出cookie无法识别.这是什么问题?

解决方法

会话哈希 isn’t available in models,only in controllers and views以及控制器和视图测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读