如何testing也定义为辅助方法的ApplicationController方法?

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

helper_method :some_method_here

  • 我如何在RSpec中testingApplicationController?
  • 在testing我的视图/帮助器时,如何包含/调用这个帮助器方法?

我使用RSpec2的Rails3

您可以使用匿名控制器来testing您的ApplicationController,如RSpec文档中所述。 还有一个关于testing助手的部分。

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

我一直在寻找这个问题的解决scheme,匿名控制器不是我正在寻找。 比方说,你有一个控制器生活在app/controllers/application_controller.rb与一个简单的方法没有绑定到RESTpath:

 class ApplicationController < ActionController:Base def your_helper_method return 'a_helpful_string' end end 

然后你可以在spec/controllers/application_controller_spec.rb编写你的testing,如下所示:

 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惯用的方式。