2011-01-14 9 views
0

コントローラ仕様でいくつかの仕様をリファクタリングしています。セッションに必要なものを設定し、重複を避けたい各コントローラの仕様セッション変数は以前はグローバルでは使用できませんでした(それぞれ、:type =>:controller)

私のためのグローバルな初期設定のフィルタが...

config.before(:each, :type => :controller) do 

    #... 

    session[:current_user] = @user 
    session[:instance] = @instance 

    #... 

end 

@user@instanceも私はちょうどここに読みやすくするためにそれらを隠されてきたbefore(:each)

に設定されている前に、

コントローラテストに

undefined method `session' for nil:NilClass 

を実行しているとき、私は、コールバックは、個々のテストでのものと同じものを持っている前に、私はグローバルを期待する次のエラーを取得しますが、私はレールの環境を持って前に、おそらく彼らがロードされていると思います初期化されましたか?

おかげ

答えて

1

使用controller.stub!(:session, { :current_user => @user, :instance => @instance })

+0

完璧!ありがとう – Rob

0

私はこれが(クロージャです)Rubyとブロックを行うことが多いと思います。

beforeに渡されたブロックは、それが作成されたコンテキストにバインドされており、そのコンテキストではsessionは使用できません。