2013-05-01 18 views
9

アクションに投稿するrspecテストがあります。アクションでは、セッション変数が確実に設定されていますが、コントローラのテストでは、セッションハッシュは空です。コントローラがセッション変数を適切な値に設定したかどうかを確認するには、Rspecテストをチェックインするにはどうすればよいですか?コントローラのアクションでセッション変数が設定されている場合のRspecテスト

+0

だから、実際の原因は何ですか? (あなたは答えを尋ねたが、実際には説明しなかったので) – lulalala

+0

答えは私が尋ねた質問に対して正しいが、私の問題は私の質問に無関係に終わった – chris

答えて

15

session[:key]のように、rspecで直接セッションにアクセスできます。それをあなたが望む価値と比較するだけです。

+1

ごめんなさい。私はそれを試みたが、セッションは空だっ​​た。仕様は空のセッションを持っていますが、通常の方法でコントローラを使用しています。 – chris

+1

@Chris、何度も何度もやったことがありますので、動作することがわかります。必要に応じてコードを貼り付けてください。 –

0

コントローラーにbefore_filterを使用していますか? before_filterがフローを変更し、変数をセッションに割り当てるコードが評価されていない場合でも、これが当てはまる可能性があります。

は、たとえば、あなたのコントローラでこのラインを持っていることがあります。あなたが署名されていない場合、あなたはこのコントローラ内の任意の方法を入力することはありません意味

# ... 
    before_filter :authenticate_user! 
# ... 

。したがって、session変数は空になります。

3

thisを参照してください。主な問題は、変数sessionにテストコードからアクセスできないことです。それを解決するには、spec/spec_helper.rbに苗字の行を追加してください:

def session 
    last_request.env['rack.session'] 
end 
+0

これはおそらく私がこれを投稿した時点で実際には間違っていたものに対する答えでした。 – chris

関連する問題