2009-12-11 10 views
7

छोटा करते तो मैं एक सिनात्रा अनुप्रयोग के लिए rspec में एक नियंत्रक विधि छोटा करते का एक तरीका यह पता लगाने की कोशिश कर रहा हूँ। इसका मुख्य कारण एप्लिकेशन के तार्किक प्रवाह का परीक्षण करना है और यह सुनिश्चित करना है कि कुछ शर्तों को पूरा होने पर यह आवश्यक कार्यों को कॉल करे। तो, संक्षेप में, मैं की तरहसिनात्रा के साथ एक नियंत्रक विधि और rspec

controller.should_receive(:fancy_method).and_return("This is a string") 

क्या मैं कठिनाई कर सिनात्रा अनुप्रयोग के भीतर नियंत्रक उदाहरण तक पहुँच रहा है हो रही है कुछ करने के लिए सक्षम होना चाहते हैं। मैं sinatra नियंत्रक वर्ग पर class_eval का उपयोग कर मौजूदा कार्यों को ओवरराइड करने में सक्षम हूं, लेकिन मुझे यह कहना अच्छा लगेगा कि ये फ़ंक्शन वास्तव में चलते हैं।

किसी को भी किसी भी सलाह है?

धन्यवाद।

उत्तर

3

दान, मुझे विश्वास है कि आप वास्तव में क्या चाहते हैं केवल नियंत्रक कार्यों का परीक्षण करना है। एक परीक्षक के परिप्रेक्ष्य से आपको वास्तव में इसकी परवाह नहीं की जानी चाहिए, बल्कि आउटपुट के लिए, एक विशिष्ट इनपुट और शायद कुछ अन्य विशेष स्थितियों (जो अन्य वर्गों का मज़ाक उड़ा रहा है या दबा रहा है) (1)।

आप official documentation for Sinatra + Rack::Test या this blog post from devver.net देख सकते हैं।

(1): यदि आपके नियंत्रक पृष्ठ कुछ अन्य वर्गों (मॉडल, सेवाओं, आदि) को बुला रहे हैं तो आप इनकी नकल कर सकते हैं और उन पर अपेक्षाएं डाल सकते हैं। उदाहरण के लिए:

SomeClass.should_receive(:msg).with(:arg).and_return(:special_value) 

(RSpec के साथ इस उदाहरण के रूप में) मजाक के लिए कुछ और अधिक जानकारी RSpec documentation pages पर पाया जा सकता।

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