ruby - Rails post from RSpec throws "no route matches" -
मेरे पास मार्ग परिभाषा है
पोस्ट '/ सत्र / बनाएँ' = & gt; 'सत्र # बनाएँ', जैसे: 'create_session'
नियंत्रक
वर्ग सत्र नियंत्रक & lt; ApplicationController response_to: json skip_before_filter: verify_authenticity_token,: only = & gt; : डीआरएफ बनाने के लिए # कुछ कर्मचारी अंत का अंत करें
अगर मैं रेसकॉनोल का उपयोग करते हुए पोस्ट अनुरोध भेजता हूं - ऐसा काम करना चाहिए, लेकिन अगर मैं आरएसपीईसी परीक्षा से पोस्ट की तरह नीचे भेजना चाहता हूं - यह फेंकता है । अपवाद
'spec_helper' की आवश्यकता होती है वर्णन SessionsController दे सकता हूँ (: user_data_to_post) {FactoryGirl.attributes_for: उपयोगकर्ता} जाने (: उपयोगकर्ता) mock_model उपयोगकर्ता अंत करना 'नया सत्र सफल होना चाहिए बनाने' का वर्णन करते हैं पहले पोस्ट कर (create_session_path, user_data_to_post.to_json, { 'HTTP_CONTENT_TYPE' = & gt; 'आवेदन / json'}) इसे समाप्त "उपयोगकर्ता मॉडल की search_by_email बुलाना चाहिए" User.should_recive करते हैं (: search_by_email) .with (user_data_to_post [: ईमेल] ) अंत अंत अंत
त्रुटि संदेश:
विफलता / त्रुटि: पोस्ट (create_session_path, user_data_to_post.to_json, ActionController :: UrlGenerationError: नहीं मार्ग मैचों {: HTTP_CONTENT_TYPE = & gt; "एप्लिकेशन / जेएसन",: नियंत्रक = & gt; "सत्र",: क्रिया = & gt; "/ & Lt; शीर्ष पर (आवश्यक) & gt; '
कोशिश करें:
पोस्ट: बनाएं, user_data_to_post, प्रारूप:: json
सबसे पहले, पोस्ट
विधि आपको अपेक्षित नियंत्रक पर कार्रवाई का नाम प्रारंभिक वर्णन
से पारित कर दिया है। चूंकि आप इसके बजाय पथ पारित कर चुके हैं, यह पूरे पथ को एक क्रिया नाम के तौर पर इलाज कर रहा था, जो स्पष्ट रूप से नहीं किया गया था।
दूसरा, पोस्ट
विधि हस्ताक्षर पंक्ति में है पोस्ट (ACTION_NAME, raw_post_data (केवल यदि स्ट्रिंग सौंपा), पैरामीटर = शून्य, सत्र = शून्य, फ्लैश = शून्य)
(वास्तव में यह पोस्ट (ACTION_NAME, * args)
है, लेकिन यह है उन आर्गों पर संसाधित किया जा रहा है। साइन आप हेडर को संशोधित करना चाहते हैं, आपको सीधे अनुरोध पर यह करना होगा:
@request ['HTTP_CONTENT_TYPE'] = 'एप्लिकेशन / जेसन'
या पारित करने के लिए प्रारूप:: json
साथ params
Comments
Post a Comment