2015-09-13 79 views
2

當我在assert user_signed_in?集成測試中說它的方法是未定義的。有沒有一種方法可以在我的測試中使用這種方法?我正在使用rails 4和最新版本的設計。這裏是我的測試文件:如何使用devise user_signed_in?方法在集成測試?

require 'test_helper' 

class UsersSignupTest < ActionDispatch::IntegrationTest 

test "valid signup information" do 
    get new_user_registration_path 
    assert_difference 'User.count', 1 do 
     post_via_redirect user_registration_path, 
            user: { first_name: "Example", 
              last_name: "User", 
              email:  "[email protected]", 
              password:    "password", 
              password_confirmation: "password" } 
    end 
    assert_template 'activities/index' 
    assert user_signed_in? 
    end 
+0

我們需要不止於此。請閱讀有關如何創建最小,完整和可驗證示例的建議:http://stackoverflow.com/help/mcve – zetetic

+0

對此感到抱歉, – user4584963

回答

4

user_signed_in?方法包括在Devise::Controllers:Helpers模塊,所以你不能用它這是不是在你的集成測試。

您可以選擇模擬此方法(這不會真正滿足您的測試需求),也可以通過查找僅在用戶登錄時纔會呈現的頁面內容來測試用戶是否登錄,如Logout鏈接例如或Signed in successfully消息。

對於控制器的測試,你可以使用色器件測試傭工include Devise::TestHelpers暴露給你一個sign_insign_out方法,更多的是在創業板上市的主頁https://github.com/plataformatec/devise