2012-02-28 13 views
16

मैंने अभी डेविस का परीक्षण शुरू कर दिया है। मैं क्यों मैं इस त्रुटि ::बेकार फेंक: डेविस परीक्षण में वार्डन

Failure/Error: subject.current_user.should_not be_nil 
ArgumentError: 
    uncaught throw :warden 

यह मेरी कल्पना में कोड ::

require "spec_helper" 

    describe Devise::PasswordsController do 
     include Devise::TestHelpers 
     before(:each) do 
      user = Factory(:user) 
      @request.env["devise.mapping"] = Devise.mappings[:user] 
      sign_in user 
     end 
     it "should have a current user" do 
       subject.current_user.should_not be_nil 
     end 
    end 

किसी को भी इस समस्या के समाधान के लिए एक ठीक हो गया है है हो रही है की समझने में असमर्थ हूँ? मुझे पता है कि github पर समस्याएं हैं लेकिन उनके मामले में include Devise::TestHelpers मेरे मामले में विपरीत नहीं था।

मैं इस लाइन :: subject.current_user.should_not be_nil

+0

क्या आपको इस समस्या के लिए कोई फिक्स मिला? – Zabba

+0

@ ज़ब्बा, या, मैंने कारखाने से उपयोगकर्ता लोडिंग को खारिज कर दिया और मुख्य रूप से, मैंने दो चीजें कीं। '' 1) 'सुनिश्चित करें कि यह एकीकरण परीक्षण नहीं है और '' 2) 'कंट्रोलर मैक्रोस **'' login_user'' – ktkaushik

उत्तर

56

मैं देख रहा हूँ कि यह एक बहुत पुरानी सवाल यह है कि कोई त्रुटि हो रही है, लेकिन मैं इसी तरह की समस्या का सामना करते आए थे। यही मेरी मदद की है।

यदि आप confirmable मॉड्यूल का उपयोग कर रहे हैं, तो उपयोगकर्ता की पुष्टि करना न भूलें, अन्यथा वार्डन अपवाद फेंक दिया गया है। अपने कोड में उचित परिवर्तन होगा:

before(:each) do 
    user = Factory(:user) 
    user.confirmed_at = Time.zone.now 
    user.save 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    sign_in user 
end 

अधिक जानकारी पाया जा सकता है Devise Wiki

+4

बीटीडब्ल्यू से फ़ंक्शन को कॉल करें, आप केवल 'user.confirm!' के रूप में कर सकते हैं confirm_at और बचत के लिए shorthand। – mahemoff

+1

ग्रेट फाइंड, इस उत्तर को @ktkaushik – jbnunn

+1

स्वीकार करने की आवश्यकता है मुझे स्थिरता के साथ कुछ समस्या थी: यह एक काम करता है https://gist.github.com/henrydjacob/1344451 –

2

uncaught throw :warden में होता है जब authenticate_user! विफल रहता है।

चित्रित करें कि आपके उपयोगकर्ता का प्रमाणीकरण असफल क्यों है, और आपने अपनी समस्या हल कर ली होगी।