2010-08-17 131 views
2

我使用RoR 3,並且我想控制器的測試中發生了一些變化。RoR測試控制器

沒有

def test_should_create_post 

test "should create user" do 
... 
end 

有什麼能解密如何是映射等?因爲我沒有明白。

而第二件事。如何編程(什麼斷言)用來測試登錄?

回答

1

所以test "something here"風格是rails的方式來幫助我們。它基本上與def test_as_you_want相同,但他們通過刪除那些令人討厭的'_(下劃線)'並用字符串包裝實際測試措辭來幫助我們。這個變化回來了,呃...也許2.3.x.這個事實必須被檢查,但至少在一年半之前。

你的第二件事是更難回答的人。你使用的是什麼插件,或者你是那些編寫自己的認證系統的人之一?

無論哪種方式,請查看'着名'auth插件如何做。從寧靜的驗證來制定,基本上你想測試,你可以:

  1. 註冊用戶帳戶
  2. 所有您的確認郵件的發送等。

大部分的這些「作弊」或者通過傳遞一個名爲signed_in users(:one)的幫手來輕鬆解決問題。假設你很酷並使用燈具。

基本上這裏是一個輔助方法,如果你的Auth插件/寶石沒有一個,就像我第一次寫測試時沒有它的Clearance一樣......不確定它現在是否有它但它揭示了它的外觀。請注意,我已經註釋掉寧靜的驗證和他/他們做到了:

#login user 
def login_user(user = users(:one)) 
    #Restful Auth Example 
    # @request.session[:user_id] = user ? users(user).id : nil 
    # Clearance 
    @controller.class_eval { attr_accessor :current_user } 
    @controller.current_user = user 
    return user 
end 

其實我覺得我偷了這從他們早該登錄助手......這大概就是我所做的。無論哪種方式,它顯示你如何僞造用戶登錄。

現在,當您測試時,只需將此login_user方法傳遞給您的測試即可,當您需要用戶登錄並開始測試該方法的其餘部分時,無需擔心它們實際登錄。這就是插件應該執行的操作和1000人以下它在github上,如果沒有至少登錄那傢伙會尖叫。

歡呼

+0

我寫我自己的身份驗證系統,這是非常簡單的,在模型中身份驗證方法,singup,登錄行動和簡單的意見。它的全部我需要。 我需要: 發送請求登錄操作一次數據良好,一次使用不好的數據。並檢查會話變量是否設置。我不知道如何實現最後的事情。 – matiit 2010-08-18 06:43:52

+0

所以你真正的問題是「我如何測試我的會話變量正在設置」? – pjammer 2010-08-18 13:37:43

+0

是的,這將是一個很好的問題 – matiit 2010-08-18 21:04:14