测试依赖于当前控制器路径的ApplicationHelper方法

时间:2009-11-04 18:50:23

标签: ruby-on-rails rspec

我在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:

有没有更好的方法来显式设置控制器和路径名?

1 个答案:

答案 0 :(得分:2)

  controller.stub!(:controller_path).and_return("foo")