Переменные сеанса ruby
Я пытаюсь написать базовый тест утверждения:
def assert_session_has ( sessionvar )
return assert_not_nil session[:sessionvar]
end
когда я компилирую:
def test_auth_bob
#some setup and other validation methods
assert_not_nil session[user]
#more validations...
end
Я получаю следующую ошибку:
test_auth_bob(UserControllerTest):
NameError: undefined local variable or method `user' for #<UserControllerTest:0x3460c28>
/test/functional/user_controller_test.rb:23:in `test_auth_bob'
Есть идеи?
2 ответа
Решение
Вы потеряли двоеточие. Как бы больно это ни звучало, некоторые люди даже не замечают.
def test_auth_bob
#some setup and other validation methods
assert_not_nil session[:user]
#more validations...
end
Без: user ссылается на переменную или метод, с двоеточием user - символ:user. Этот пост в Интернете о символах, кажется, объясняет больше… но я не читал его. Меня зовут от компьютера захватывающий, но медленный эпизод The Wire. Хорошо.
Где вы заявляете user
в вашем test_auth_bob
функционировать? Переводчик жалуется, что символ не определен.