使用Rails3.2,我在一个子目录中有一个控制器(例如,controllers/data-feeds/acme-feed-controller.rb)
这个控制器有一些常数如下
class DataFeeds::AcmeFeedController < ApplicationController
MY_CONSTANT = "hi
def do_something do
...
end
end
在我的rspec controller spec(在/spec/controllers/data_feeds/acme_feed_controller_spec.rb中)中,我想要访问这个常量,下面是我尝试过的两种方法(在下面的代码中都注释掉了)
describe AcmeFeedController do
if "tests something" do
#c = AcmeFeedController.MY_CONSTANT
#c = DataFeeds::AcmeFeedController.MY_CONSTANT
end
end
很明显,我不了解运行规范测试的范围。我需要做什么和同样重要的原因(即,作用域发生了什么)。
谢谢你的帮助。
最佳答案
常量不能用点语法引用,因此DataFeeds::AcmeFeedController.MY_CONSTANT
在任何上下文中都不起作用。您需要使用::
来引用常量:DataFeeds::AcmeFeedController::MY_CONSTANT
。
注意,这是一个ruby问题,与rspec无关。当您遇到这样的问题时,我建议您先弄清楚如何使用普通的ruby(例如在irb中),然后再考虑它在rspec中是如何工作的(无论如何,通常都是相同的)。
如果你想知道常量在ruby中是如何工作的,我建议你观看详细解释它们的this talk。