2011-06-13 14 views
10

मेरा रूबी प्रोग्राम stdin से लाइनें पढ़ता है और (टर्मिनल) पर प्रिंट करने के लिए puts का उपयोग करता है। क्या मैं पढ़ और लिखने का परीक्षण करने के लिए आरएसपीसी का उपयोग कर सकता हूं? क्या मैं अपने प्रोग्राम में एक स्ट्रिंग इंजेक्ट कर सकता हूं जैसे कि यह stdin में लिखा गया था और साथ ही आउटपुट की जांच भी कर सकता था?क्या मैं कंसोल पढ़ने और लिखने के परीक्षण के लिए stdin/stdout mock करने के लिए आरएसपीसी का उपयोग कर सकता हूं?

line = STDIN.read.chomp.split 

इसके अलावा, मैं पढ़ता है और एक पाश में लिखते हैं line[0] है जब तक "छोड़ने" है,। क्या मैं लूप चालू होने पर परीक्षण कर सकता हूं या मुझे subject.read_in और subject.write_out पर कॉल करना चाहिए?

उत्तर

16

आप मैक्स का उपयोग कर सकते हैं और विधि में एकाधिक मानों को सूचीबद्ध करके एक से अधिक बार विधि को बुलाया जा सकता है। दिए गए क्रम में, प्रत्येक कॉल पर इन्हें वापस कर दिया जाएगा।

STDIN.should_receive(:read).and_return("Your string") 

STDIN.should_receive(:read).and_return("value1", "value2", "value3") 

आप STDOUT के साथ इसी तरह कर सकते हैं:

STDOUT.should_receive(:puts).with("string") 

अधिक जानकारी के लिए RSpec mocking documentation देखें।

+1

यह 'STDOUT.should_receive (: प्रिंट) 'वास्तव में है। – yawn

+0

@Yawn धन्यवाद, इसे ठीक किया गया। – Jonathan

+0

आप कैसे उपयोग करने के लिए जानते हैं: प्रिंट या: पढ़ें .... यह "आरएसपीईसी का उपयोग कैसे करें" दस्तावेज में मौजूद है? हर जगह मैं बारी करता हूं कि मैं उन उम्मीदों को देखता हूं जिनके बारे में मैंने कभी नहीं सुना है (मेरे पास आरएसपीसी बुक है) मुझे इस विषय पर एक निश्चित पाठ नहीं मिल रहा है। – thefonso

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

  • कोई संबंधित समस्या नहीं^_^