2009-08-31 99 views
0

我想写基本断言测试:红宝石会话变量

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' 

任何想法?

回答

1

你失去了一个冒号。尽管听起来很痛苦,但有些人甚至没有注意到。

def test_auth_bob 
    #some setup and other validation methods 
    assert_not_nil session[:user] 
    #more validations... 
end 

如果没有:用户引用一个变量或方法,冒号用户是符号:用户。 This post on the internet about symbols似乎解释更多......但我没有读过它。我正在通过The Wire的一个令人兴奋但缓慢移动的情节从计算机中远离。这很好。

2

你在哪里声明user在你的test_auth_bob函数中?解释者抱怨该符号未定义。

+0

第23行是assert_not_nil调用。我知道这是这条线,因为如果我把它评论出来,测试函数的其余部分就没有问题。 – cbrulak 2009-08-31 19:06:56

+1

删除我的评论,因为我看到错误消息中的哪一行是23。 – theIV 2009-08-31 19:50:42

+0

它不会抱怨test_auth_bob函数 – cbrulak 2009-08-31 20:43:10