【发布时间】:2009-11-04 18:50:23
【问题描述】:
我在 ApplicationHelper 中有一个方法
def javascript_auto_link_tags
js_path = "#{RAILS_ROOT}/public/javascripts"
js = "#{controller.controller_path}.js"
javascript_include_tag(js) if FileTest.exist?("#{js_path}/#{js}")
end
这应该会根据当前控制器文件名和路径找到一个 javascript 文件,因此 controllers/admin/blah_controller.rb 将生成“/javascripts/admin/blah.js”并包含它(如果存在)。
在 RSpec 中我不确定测试这个的最佳方法,因为我不知道控制器是如何被处理的 application_helper_spec.rb。
我目前的测试是:
it "should load controller specific js" do
FileTest.should_receive(:exist?).and_return(true)
helper.javascript_auto_link_tags.should include("/javascripts/spec/rails/example/helper_example_group.js")
end
我基本上是通过检查nil来拉取结果的,但我不知道是否依赖于RSpec如何对待controller_path(必须是“/spec/rails/example/helper_example_group_controller”)。
'ApplicationHelper for javascript auto 链接标签应该加载控制器 特定的 css' FAILED 预期为零,得到 “” ./spec/helpers/application_helper_spec.rb:34:
有没有更好的方法来显式设置控制器和路径名?
【问题讨论】:
标签: ruby-on-rails rspec