2011-09-28 69 views
1

所以,我试图做一些单元测试,并且在运行测试时我的current_account_permissions变量未定义。 (在服务器运行时工作正常)。如何将变量添加到全局范围? (红宝石在轨道上)

它与current_user类似,因为它在任何地方都可用,除了测试显然。

有没有一种方法可以将变量添加到全局范围?

也许类似ENV["current_account_permissions"] = whatever但不必使用ENV[]表示法来检索变量?

+1

'current_account_permissions'定义在哪里?定义'global' :)我猜这意味着它在所有控制器中都是已知的? – nathanvda

+0

借调@nathanvda说,这意味着全局变量最有可能**不是正确的解决方案。 –

+0

考虑http://stackoverflow.com/questions/3598785/where-to-put-global-variables-in-rails-3 – jaydel

回答

1

我在这里假设,但没有任何代码很难说,不知何故current_account_permissions混入ApplicationController

我也假设current_account_permissions是一种方法,它应该像做

def current_account_permissions 
    @current_account_permissions ||= current_user.get_current_account_permissions 
end 

所以,如果是这样的话,你的所有控制器测试将运行良好的花花公子。但是,在您的视图测试中,您将不得不存根current_account_permissions,因为测试时没有控制器上下文。

希望这会有所帮助。