ruby-on-rails - 如何在 Rails 3 下的 rspec 测试中访问 Controller 常量

标签 ruby-on-rails ruby testing rspec constants

使用 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/

相关文章:

java - 无法使用 ant 运行类别中的所有 junit 测试

ruby-on-rails - Searchkick-Elasticsearch-带下划线而不是空格的名称

ruby-on-rails - Rails 5.1 has_many through - 关联字段

ruby - 举例来说,Ruby 中的 print 和 puts 有什么区别?

ruby - 如何在 Ruby 中形成 "fuzzy date"?

java - 如何为将输出打印到控制台的 void 函数编写 junit 测试用例

html - 从 html 元素获取 data-id

ruby-on-rails - 当列与表不匹配时,如何可逆地删除表上的remove_foreign_key?

ruby-on-rails - 刚开始使用 Rails --> 这些天它真的有问题还是只有我?

ruby -1.9.3-p286 : can't install with RVM on OS X