【问题标题】:ruby session variables红宝石会话变量
【发布时间】:2009-08-31 18:54:36
【问题描述】:

我正在尝试编写基本的断言测试:

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'

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-test


    【解决方案1】:

    您在test_auth_bob 函数中的何处声明user?解释器抱怨符号未定义。

    【讨论】:

    • 第 23 行是 assert_not_nil 调用。我知道是这一行,因为如果我将其注释掉,其余的测试功能就可以了。
    • 删除了我的评论,因为我在错误消息中看到哪一行是 23。
    • 它没有抱怨 test_auth_bob 函数
    • 您上面的错误消息说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。 This post on the internet about symbols 似乎解释得更多……但我还没有读过。我被《火线》中惊心动魄但动作缓慢的一集叫离开电脑。挺好的。

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 1970-01-01
      • 2011-01-25
      • 2011-07-25
      • 1970-01-01
      • 2010-09-28
      • 2011-03-21
      • 2019-08-09
      • 1970-01-01
      相关资源
      最近更新 更多