2011-12-19 14 views
0

ここで初心者の質問があります。私はレールのチュートリアルと一緒に従ってきたし、私は私のテストで足止めを打った。私は...factory_girl before_filterでrspecテストに失敗しました

​​

を次のフィルタを実装する場合...私user_controller_spec.rbテストのすべての彼らが通過する前に「編集GET」と「PUT更新は」どこが失敗し始めるに関連します。ここでtrueを返したはず1ですが、falseが返さ:

describe "GET 'edit" do 

before(:each) do 
    @user = Factory(:user) 
    test_sign_in(@user) 
end 

it "should be successful" do 
    get :edit, :id => @user 
    response.should be_success 
end 
end 

そして、これは私のtest_sign_inコードはspec_helper.rbに

def test_sign_in(user) 
controller.sign_in(user) 
end 

あるsign_in方法はApplicationControllerにしてincudedさSessionsHelper、である:

def sign_in(user) 
cookies.permanent.signed[:remember_token] = [user.id, user.salt] 
current_user = user 
end 

詳しい調査方法はわかりません。私の推測では、Rspecは '編集編集'できなかったので、見ることができる要求のログがなければならないが、テストでは偽を返すとしか伝えられないということだ。どこで見える?

アップデート:私はログに見つけたもの/ test.logは、次のように行ごとに「HTMLなどがUserControllerの#インデックスによる処理」はリダイレクトが続いているということです。

Processing by UsersController#index as HTML 
    [1m [35mUser Load (0.2ms) [0m SELECT "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1 
    Redirected to http://test.host/signin 

が、これはどういう意味そのすべてのテストインデックスアクションに続いてサインインへのリダイレクト?これが本当であれば、それはtest_sign_in方法(上記の)失敗し、この1つの通過のような他のテストなどのテストと一致思わ:

describe "GET 'index' for non-signed-in users" do  
    it "should deny access" do 
    get :index 
    response.should redirect_to(signin_path) 
    end 
end 

私は再びtest_sign_in方法のまわりで私の頭をラップしようとするつもりです。

+0

私たちにsign_inメソッドを表示できますか? – Lichtamberg

+0

うれしい。ありがとう、リッテンバーグ。 – eeeeeean

+0

'log/test/log'の内容を調べてみてください – zetetic

答えて

2

sign_inヘルパーでselfに電話する必要があります。

def sign_in(user) 
    cookies.permanent.signed[:remember_token] = [user.id, user.salt] 
    self.current_user = user 
end 
関連する問題