2017-10-30 8 views
0

私はテストしたい非常に単純なアプリケーションコントローラメソッドを持っています。リダイレクトする必要があるかどうかを判断するために、他のアプリケーションコントローラのメソッドによって使用されます。したがって、render関数を実行することはありません。ミニテスト - レンダリングなしでアプリケーションコントローラメソッドをテストする

class ApplicationController < ActionController::Base 
    def has_consent 
    current_user ? current_user.consent : nil 
    end 
end 

ミニテスト使用#assert_response#assert_redirected_toためのすべての例。ミニテストフレームワーク内でapplication_controllerメソッドにアクセスするにはどうすればよいですか? IEは、私はテストを書くことができますが、一体どのようにそれを設定するのですか?

答えて

1

簡単な答えはありませんか?

コントローラのパブリックAPIは、HTTPリクエストに応答するアクションで、HTTPリクエストを送信し、返されたレスポンスに関するアサーションを記述することでテストします。

メソッドがHTTP要求に応答しない場合は、プライベートメソッドである必要があります。 あなたは秘密をテストしません。

ユーザーが同意していない場合にアプリケーションがどのように応答するかをテストしてテストする必要があります。実装の詳細ではありません。

メソッドを単独でテストすることが非常に重要な場合は、コントローラには属しません。モデルレイヤーまたはヘルパーではなく、単独でテストすることができます。

+0

モックコントローラクラスを作成し、それをApplicationControllerで拡張することによって、完全に可能ですが、それは良い考えではありません。 – max

関連する問題