2011-09-25 77 views
1

在下面的例子中,我可以用build()代替create()可以設計sign_in()測試助手接受一個new_record嗎?

class UsersControllerTest < ActionController::TestCase 

    setup do 
    @user = Factory.create(:user) 
    end 

    test "admin can get index" do 
    sign_in @user 
    get :index 
    assert_response :success 
    end 

    test "user cannot get index" do 
    sign_in @user 
    get :index 
    assert_response 403 
    end 

end 

在實際生活中使用,用戶將已經登錄之前創建(保存),所以這就是爲什麼我的測試使用create()。但是,我想使用build(),因爲我希望它能使我的測試更快。

的色器件README沒有明確說這是正常使用的編譯()。

在此先感謝您的幫助。

回答

1

它看起來像用戶記錄必須按照本說明何來堅持。

有模擬的是從來沒有去上班。當你說登錄時,用戶是 存儲在會話中(基本上,用戶類和它的ID)。當您 訪問的控制,另一個用戶對象是基於 存儲的數據檢索。解決這個問題的最好方法是使用一些東西,例如Factory Girl。

https://github.com/plataformatec/devise/issues/928