ruby-on-rails – 如何在Rails 3下的rspec测试中访问控制器常量
发布时间:2020-12-17 01:50:01 所属栏目:百科 来源:网络整理
导读:使用Rails 3.2我在子目录中有一个控制器(例如/controllers/data_feeds/acme_feed_controller.rb) 该控制器有一些常数如下 class DataFeeds::AcmeFeedController ApplicationController MY_CONSTANT = "hi def do_something do ... endend 在我的rspec控制器
使用Rails 3.2我在子目录中有一个控制器(例如/controllers/data_feeds/acme_feed_controller.rb)
该控制器有一些常数如下 class DataFeeds::AcmeFeedController < ApplicationController MY_CONSTANT = "hi def do_something do ... end end 在我的rspec控制器规范(在/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详细解释它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |