如何测试ApplicationController方法也定义为辅助方法?

时间:2011-01-19 18:24:11

标签: ruby-on-rails rspec helper rspec2

在我的ApplicationController中,我有一个定义为辅助方法的方法:

helper_method :some_method_here

  • 我如何在RSpec中测试ApplicationController?
  • 如何在测试我的视图/帮助程序时包含/调用此帮助程序方法?

我正在使用Rails3和RSpec2

2 个答案:

答案 0 :(得分:53)

您可以使用anonymous controller来测试ApplicationController,如RSpec文档中所述。 testing helpers还有一节。

答案 1 :(得分:22)

您可以在规范中的subject@controller上调用辅助方法。

我一直在寻找这个问题的解决方案,而匿名控制器并不是我想要的。假设你有一个控制器生活在app/controllers/application_controller.rb,并且有一个简单的方法,它没有绑定到REST路径:

class ApplicationController < ActionController:Base

  def your_helper_method
    return 'a_helpful_string'
  end

end

然后您可以在spec/controllers/application_controller_spec.rb中编写测试,如下所示:

require 'spec_helper'

describe ApplicationController do

  describe "#your_helper_method" do
    it "returns a helpful string" do
      expect(subject.your_helper_method).to eq("a_helpful_string")
    end
  end

end

虽然@controllersubject可以在这里互换使用,但我现在会以subject作为RSpec习惯用法。