2011-08-24 16 views
19

मैं देख रहा हूँ मैं इस तरह rspec साथ मार्गों का परीक्षण कर सकते हैं:rspec मार्ग परीक्षण और मेजबान

get("/").should route_to("welcome#index") 

लेकिन मैं होस्ट नाम या होस्ट नामों के कुछ हिस्सों के आधार पर की कमी है और कई लोगों के बीच पुनर्निर्देश। परीक्षण करते समय मैं होस्टनाम निर्दिष्ट कैसे करूं?

मैं उचित कॉन्फ़िगरेशन के साथ परीक्षण कैसे चला सकता हूं? मैं मुद्रण root_url की कोशिश की और मुझे मिल गया:

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

उत्तर

52

मेरा जब भी मैं चलाने rspec spec/

पूरे त्रुटि वास्तव में है पर एक ही त्रुटि होता है:

Failure/Error: @user = Factory(:user) 
    ActionView::Template::Error: 
     Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true 
    # ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928' 
    # ./spec/models/campaign_spec.rb:21 

निम्न पंक्ति:

# ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928' 

वास्तव में मुझे यह संकेत दिया कि वह त्रुटि है जो त्रुटि को फेंक रहा है।

बाहर कर देता है मैं config/environments/test.rb में

config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

सेट नहीं किया है (केवल development.rb में)

config विकल्प जोड़ा जा रहा है मेरा पर त्रुटियों को हटा दिया। मुझे संदेह है कि आप अन्य रत्नों का उपयोग कर रहे हैं जिनके लिए एक ही विकल्प सेट की आवश्यकता है।

+0

मैं वसीयत का उपयोग नहीं कर रहा हूँ, और मुझे मिल गया एक ही त्रुटि जब मैं अपने मेलर विचारों में से किसी एक में कुछ_पैथ के बजाय something_url का उपयोग करने का प्रयास कर रहा था - क्योंकि एक्शनमेलर को यह नहीं पता कि यह किस प्रकार का वातावरण चल रहा है। आपका समाधान काम करता है, लेकिन मैं सिर्फ यह स्पष्ट करना चाहता था कि यह कारण नहीं है तैयार करके – Oranges13

+2

@ Oranges13: 6 महीने बाद और मैं स्पष्ट रूप से देख सकता हूं कि यह त्रुटि उत्पन्न करने के लिए तैयार नहीं है, यह सिर्फ यह है कि यह devise 'विचारों के माध्यम से पारित किया गया है। मैं बहुत खुश हूं कि मैंने अपनी पूरी डीबगिंग प्रक्रिया को दस्तावेज किया, मुझे एहसास हुआ कि मैंने कितने रेल सीखे हैं। – Rystraum

+1

@Rystraum मैं आपके समाधान के साथ इस मुद्दे को हल कर सकता हूं। हालांकि, यह मानते हुए कि आपके उपयोगकर्ता मॉडल में डेविस का 'पुष्टिकरण' मॉड्यूल शामिल है, फिर 'उपयोगकर्ता' सेटिंग के लिए आपकी फैक्टरी परिभाषा में पुष्टि की गई है 'confirm_at {Time.now}' * लापता मेजबान * * त्रुटि को रोकता है। फिर भी हमारे कोड में लिंक के लिए पूर्ण यूआरएल उत्पन्न करने के लिए डिफ़ॉल्ट होस्ट की आवश्यकता होती है। धन्यवाद। –

8

मेरे मामले में मैं

config/environments/test.rb 

को

config.action_mailer.default_url_options = { :host => 'localhost:5000' } 

जोड़ने के लिए निम्नलिखित क्योंकि मैं FactoryGirl उपयोग कर रहा था उपयोगकर्ता से email_confirmation लंघन के बिना किसी उपयोगकर्ता को उत्पन्न करने के लिए किया था।

19

उपरोक्त में से कोई भी मेरे लिए काम नहीं करता है। फिक्स्ड त्रुटि मेरी spec_helper.rb के लिए निम्न (मेरे मामले कल्पना/support/mailer.rb जो spec_helper.rb में शामिल है में) जोड़ना:

Rails.application.routes.default_url_options[:host] = 'test.host'

+0

इससे मुझे मदद मिली, लेकिन मुझे इसे _rails_helper.rb_ में रखना पड़ा। धन्यवाद – Sparkmasterflex

संबंधित मुद्दे