使用 Rails 3.2 我在子目录中有一个 Controller (例如/controllers/data_feeds/acme_feed_controller.rb)
这个 Controller 有一些常量如下
class DataFeeds::AcmeFeedController < ApplicationController
MY_CONSTANT = "hi
def do_something do
...
end
end
在我的 rspec Controller 规范中(在/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 无关。当您遇到这样的问题时,我建议您在担心它在 RSpec 中的工作方式(通常它是相同的,无论如何)之前先弄清楚如何使用普通的 ruby(例如在 IRB 中)。
如果你想知道常量在 ruby 中是如何工作的,我建议你观看 this talk详细解释了它们。
关于ruby-on-rails - 如何在 Rails 3 下的 rspec 测试中访问 Controller 常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907885/