【问题标题】:Testing ApplicationHelper methods that rely on the current controller path测试依赖于当前控制器路径的 ApplicationHelper 方法
【发布时间】: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


    【解决方案1】:
      controller.stub!(:controller_path).and_return("foo")
    

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多