web-dev-qa-db-ja.com

ヘルパーメソッドとしても定義されているApplicationControllerメソッドをテストする方法は?

私のApplicationControllerには、ヘルパーメソッドとして定義されたメソッドがあります。

helper_method :some_method_here

  • RSpecでApplicationControllerをテストするにはどうすればよいですか?
  • ビュー/ヘルパーをテストするときに、このヘルパーメソッドを含める/呼び出す方法を教えてください。

RSpec2でRails3を使用しています

43
Mirko

RSpecのドキュメントで説明されているように、 匿名コントローラー を使用してApplicationControllerをテストできます。 ヘルパーのテスト に関するセクションもあります。

53
Jimmy Cuadra

仕様のsubjectまたは@controllerでヘルパーメソッドを呼び出すことができます。

私はこの問題の解決策を探していましたが、匿名のコントローラーは私が探していたものではありませんでした。 RESTパスにバインドされていない単純なメソッドを持つapp/controllers/application_controller.rbに住んでいるコントローラーがあるとします:

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を交換可能に使用できますが、現時点ではRSpecの慣用的な方法としてsubjectを使用します。

22
Konrad Reiche