我正在创建一个
Ruby on Rails应用程序,并且我正在尝试运行涉及我的User模型的测试,以查看“记住我”功能是否有效.我使用Rails的内置cookie散列来存储cookie,并使用会话散列来存储当前会话.我运行各种测试(集成,模型和控制器),我使用会话变量,但由于某种原因,在这种特殊情况下,它不被识别.
NameError: undefined local variable or method `session' for #<UserTest:0x0000000658b5c8>
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
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 ...
解决方法
会话哈希
isn’t available in models,only in controllers and views以及控制器和视图测试.