2011-01-19 6 views
41

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

helper_method :some_method_here

  • がどのように私はすべてではRSpecでApplicationControllerにテストできますか?
  • ビュー/ヘルパーのテスト時にこのヘルパーメソッドを組み込む/呼び出すにはどうすればよいですか?

私はRSpecのドキュメントで説明するようにあなたは、あなたのApplicationControllerにをテストするためにanonymous controllerを使用することができますRSpec2

答えて

50

をRails3を使用しています。 testing helpersに関するセクションもあります。

+0

何とか私はその匿名のコントローラーを見逃しました!ありがとう! – Mirko

+0

私が知る必要があった正確に! – Matthew

+2

はまだRails4で動作していますか?私は 'No route matches {:controller =>" anonymous "、:action =>" some action "}' ..に問題があります。 – chrmod

21

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

私はこの問題の解決策を探していましたが、匿名コントローラは私が探していたものではありませんでした。 @controllerながら

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 

と次のように次にあなたがspec/controllers/application_controller_spec.rbでテストを書くことができ

class ApplicationController < ActionController:Base 

    def your_helper_method 
    return 'a_helpful_string' 
    end 

end 

:あなたはRESTパスにバインドされていない簡単な方法でapp/controllers/application_controller.rbでの生活のコントローラを持っているとしましょうsubjectはここで交換可能に使うことができますが、私はsubjectをRSpecの慣用的な方法として使用します。

+1

あなたの答えを使って '' 'current_user''ヘルパーをテストし、正常に動作しています –

+0

このパターンは' helper_method'引数に追加されていないメソッドに対しても仕様を渡すことができます。私はヘルパーメソッドを 'protected'として定義し、' expect(subject.send(:your_helper_method))。をeq "a_helpful_string" 'に指定する方が好きです。 – Epigene

+0

送信はハックです。しないでください –

関連する問題