我在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”)。
'适用于javascript auto的ApplicationHelper 链接标签应该加载控制器 具体的css'失败预计为零,得到了 “” ./spec/helpers/application_helper_spec.rb:34:
有没有更好的方法来显式设置控制器和路径名?
答案 0 :(得分:2)
controller.stub!(:controller_path).and_return("foo")