जोड़ता हूं, मैं आरएसपीईसी को एक साधारण मचान वाले ऐप के लिए काम करने की कोशिश कर रहा हूं, आरएसपीसी मचान परीक्षणों से शुरू होता हूं।रेल 3/rspec/devise: rspec नियंत्रक परीक्षण विफल रहता है जब तक कि मैं एक डमी = subject.current_user.inspect
devise विकी के अनुसार, मैंने विभिन्न devise config प्रविष्टियों, उपयोगकर्ता और व्यवस्थापक के लिए एक कारखाना जोड़ा है, और मेरे spec नियंत्रक में पहली चीजें मैं login_admin है।
अजीब बात है, हालांकि ... मेरे सभी चश्मा जब तक मैं सही it ... do
पंक्ति के बाद निम्नलिखित बयान जोड़ने असफल: जैसा कि नीचे दिखाया
dummy=subject.current_user.inspect
(लाइन के साथ,, चश्मा पारित है कि रेखा के बिना। , सभी परीक्षण अपेक्षित मूल्य के बजाय शून्य होने के साथ असफल हो जाते हैं। मुझे केवल यह पता चला कि जब मैं वर्तमान_user सही ढंग से सेट किया जा रहा था, तो यह देखने के लिए कुछ डालता है।)
तो यह कैसा काम करता है डमी स्टेटमेंट किसी भी तरह से 'बल' को मौजूदा_यूसर लोड या रीफ्रेश या मान्यता प्राप्त करने के लिए।
क्या कोई यह बता सकता है कि क्या हो रहा है, और मुझे अलग-अलग क्या करना चाहिए, इसलिए मुझे डमी स्टेटमेंट की आवश्यकता नहीं है? उपयोगकर्ता या:
#specs/controllers/brokers_controller_spec.rb
describe BrokersController do
login_admin
def valid_attributes
{:name => "Bill", :email => "[email protected]", :company => "Example Inc", :community_id => 1}
end
def valid_session
{}
end
describe "GET index" do
it "assigns all brokers as @brokers" do
dummy=subject.current_user.inspect # ALL SPECS FAIL WITHOUT THIS LINE!
broker = Broker.create! valid_attributes
get :index, {}, valid_session
assigns(:brokers).should eq([broker])
end
end
describe "GET show" do
it "assigns the requested broker as @broker" do
dummy=subject.current_user.inspect # ALL SPECS FAIL WITHOUT THIS LINE!
broker = Broker.create! valid_attributes
get :show, {:id => broker.to_param}, valid_session
assigns(:broker).should eq(broker)
end
end
और प्रति चिंतन करना विकि यहाँ मैं कैसे के लिए लॉग इन एक है
def valid_session
{}
end
...
get :index, {}, valid_session
इस वजह से
: admin
#spec/support/controller_macros.rb
module ControllerMacros
def login_admin
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:admin]
sign_in Factory.create(:admin) # Using factory girl as an example
end
end
def login_user
before(:each) do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = Factory.create(:user)
user.confirm! # or set a confirmed_at inside the factory. Only necessary if you are using the confirmable module
sign_in user
end
end
end
क्या आप login_admin में क्या है? – apneadiving
ने इसे अभी मेरे प्रश्न के अंत में जोड़ा है ... – jpwynn
यदि आप '.inspect' को हटाते हैं तो यह असफल हो जाता है? शायद यह एक प्रारंभिक समस्या है। असफल परीक्षणों के लिए आपको क्या त्रुटि है? – phoet