模型测试中未定义的局部变量或方法 'session'
Undefined local variable or method 'session' in model test
我正在 Rails 应用程序上创建一个 Ruby,并且正在尝试 运行 涉及我的用户模型的测试以查看 "Remember me" 功能是否有效。我正在使用 Rails' 内置的 cookies
散列来存储 cookie,并使用 session
散列来存储当前会话。我在使用 session
变量的地方进行了 运行 各种测试(集成、模型和控制器),但出于某种原因,在这种特殊情况下它没有被识别。
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
...
当我从助手中删除那行代码时,会抛出一个错误,指出 cookies
未被识别。这里有什么问题?
session
哈希 isn't available in models, only in controllers and views 以及控制器和视图测试。
我正在 Rails 应用程序上创建一个 Ruby,并且正在尝试 运行 涉及我的用户模型的测试以查看 "Remember me" 功能是否有效。我正在使用 Rails' 内置的 cookies
散列来存储 cookie,并使用 session
散列来存储当前会话。我在使用 session
变量的地方进行了 运行 各种测试(集成、模型和控制器),但出于某种原因,在这种特殊情况下它没有被识别。
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
...
当我从助手中删除那行代码时,会抛出一个错误,指出 cookies
未被识别。这里有什么问题?
session
哈希 isn't available in models, only in controllers and views 以及控制器和视图测试。