2009-02-09 14 views
20

टेस्ट :: यूनिट और कंधे के साथ काम करना। Users.create का परीक्षण करने का प्रयास कर रहा है। मेरी समझ यह है कि रेल फॉर्म इस तरह के ऑब्जेक्ट के लिए पैरा भेजते हैं:आप रेल परीक्षण में पोस्ट पैरा कैसे निर्दिष्ट करते हैं?

user[email] 

जो आपकी कार्रवाई में हैश में बदल जाता है, है ना?

params[:user][:email] 

ठीक है, अपने परीक्षण में मैं कोशिश की है तो ...

setup { post :create, :post => { 'user[email]' => '[email protected]' } } 

और

setup { post :create, :post => { :user => { :email => '[email protected]' } } } 

दोनों ही मामलों में, मेरे कार्रवाई में अधिक, params[:user] नहीं के बराबर है।

def post(action_name, params_hash = {}, session_hash = {}) 

और परीक्षणों में, परम हैश सीधे अपने नियंत्रक कार्रवाई की params में भेज दिया जाता है:

उत्तर

43
post :create, :user => { :email => '[email protected]' } 

प्राप्त, पोस्ट, डाल, हटाने के सभी परीक्षण तरीकों के लिए सामान्य रूप इस प्रकार हैं किसी भी प्रकार का अनुवाद नहीं है। यहां तक ​​कि एकीकरण परीक्षण करने के लिए आपको रेलवे फ्रेमवर्क परीक्षणों द्वारा बहुत अच्छी तरह से कवर के रूप में अनुवाद को पैराम करने के लिए इस स्ट्रिंग का परीक्षण करने की आवश्यकता नहीं है। इसके अलावा पैराम की आवश्यकता वाले सभी परीक्षण विधियों को बिना किसी शिकायत के आपके पास चीजों को आसान बनाने के लिए इस तरह से हैश स्वीकार करते हैं।

+0

यह भी करने वाला काम है: पोस्ट ": बनाने के लिए, {: ईमेल => 'foo @ bar.com '} "और नियंत्रक पक्ष से आपके पास होगा: पैराम्स [: ईमेल] आपको' [email protected] 'देता है – nisevi

6
post :create, {:post => {}, :user => {:email => '[email protected]'} }

इस मामले पैरामीटर में [: ​​पोस्ट] है {}, पैरामीटर [: उपयोगकर्ता] {: ईमेल => 'एबीसी @ एबीसीडी'}, पैरामीटर [: उपयोगकर्ता] [: ईमेल] है 'है एबीसी @ एबीसीडी '।

post :create, {:post => {:user => {:email => '[email protected]'} } }

इस मामले पैरामीटर में [: ​​पोस्ट] [: उपयोगकर्ता] [: ईमेल] है 'एबीसी @ एबीसीडी'

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