2010-11-22 9 views
0

私はRails 2.3.8プロジェクトでDevise 1.0.8を使用しています。私は私のコントローラのテストで:current_userは、Deviseを使用しているコントローラではなく、TrueClassを返します

context "when current_user is admin" do 
    should "render" do 
    sign_in Factory(:admin) 
    get :index 
    assert_response :success 
    end 
end 

とコントローラ自体では、以下のbefore_filterがあります:

def redirect_if_not_admin 
    puts current_user 
    redirect_to root_path unless current_user.try(:admin?) 
end 

これは私のテストからの出力である:

true 
false 

NoMethodError: undefined method `admin?' for true:TrueClass 

だから、CURRENT_USERがされテストでsign_inを使うと本当です。しかし、私がそうしないと、current_userはnilなので、間違いなく影響を受けています。助けを前にありがとう。

答えて

2

私は確認を使用しました!メソッドを、after_create/build内のリソースに対して、工場で属性を設定するのではなく、そのトリックを実行するのではなく、 current_userは、サイトに未確認のユーザー(サインアップしたがまだ送信された確認リンクをクリックしていないユーザー)がいる場合にtrueになります。

関連する問題