2011-09-28 84 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,因爲測試時沒有控制器上下文。

希望這會有所幫助。