2011-12-19 169 views
0

我在這裏有一個新手問題。我一直在跟隨rails教程,並且在測試中遇到了一些障礙。當我執行下面的過濾器...factory_girl rspec測試失敗與before_filter

​​

...我所有的涉及到「GET編輯」和「PUT更新」開始user_controller_spec.rb測試失敗,他們才能通過。這裏是一個應該已返回真實的,但返回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 

這是spec_helper.rb我test_sign_in代碼

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

的sign_in方法是SessionsHelper,這是在ApplicationController中incuded:

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

我不知道如何進一步調查。我的猜測是,由於Rspec無法'獲取編輯',我必須記錄該請求的日誌,但是測試只會告訴我它返回了錯誤。我在哪裏可以看下?

更新:我在日誌中找到/ test.log中是每一行「由UsersController#指數作爲HTML處理」之後是一個重定向如下:

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方法(上)不和其他測試像這樣的傳球是一致的:

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 2011-12-19 20:17:45

+0

很高興。謝謝你,Lichtamberg。 – eeeeeean 2011-12-19 21:19:06

+0

嘗試查看'log/test/log'的內容 – zetetic 2011-12-20 04:35:54

回答

2

您需要在sign_in助手中致電self

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