2008-10-28 17 views
26

मेरे रेल नियंत्रक में, मैं एक ही मॉडल वर्ग के कई उदाहरण बना रहा हूं। मैं कुछ आरएसपीसी उम्मीदों को जोड़ना चाहता हूं ताकि मैं परीक्षण कर सकूं कि यह सही पैरामीटर के साथ सही संख्या बना रहा है। तो, यहाँ क्या मैं अपने कल्पना में है:मैं आरएसपीईसी का उपयोग कर ऑब्जेक्ट पर एकाधिक कंधे की उम्मीदों को कैसे जोड़ सकता हूं?

 
Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => @user.id, :position_id => 1, :is_leader => true) 
Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "2222", :position_id => 2) 
Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "3333", :position_id => 3) 
Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "4444", :position_id => 4) 

यह समस्या उत्पन्न कर रहा है, क्योंकि ऐसा लगता है बैंड मित्र वर्ग केवल 1 "should_receive" उम्मीद उस पर सेट हो सकता है। तो, जब मैं उदाहरण के चलाने के लिए, मैं निम्नलिखित त्रुटि मिलती है:

 
Spec::Mocks::MockExpectationError in 'BandsController should create all the bandmates when created' 
Mock 'Class' expected :create with ({:band_id=>1014, :user_id=>999, :position_id=>1, :is_leader=>true}) but received it with ({:band_id=>1014, :user_id=>"2222", :position_id=>"2"}) 

उन दूसरी कॉल बनाने के लिए के लिए सही मानकों हैं, लेकिन RSpec गलत मापदंडों के खिलाफ परीक्षण है।

क्या कोई जानता है कि मैं अपनी अलग-अलग कॉलों को कई अलग-अलग कॉलों की अनुमति देने के लिए कैसे स्थापित कर सकता हूं?

+0

यह काम करना चाहिए। आप आरएसपीईसी का किस संस्करण का उपयोग कर रहे हैं? Spec से बैंड में stubed विधियों को कॉल करने का प्रयास करें (Bandmate.create (...: user_id => @ user.id ...); Bandmate.create (...: user_id => "2222" ...); ...) और देखें कि यह काम करता है या नहीं। –

उत्तर

34

एकाधिक अपेक्षाएं कोई समस्या नहीं है। आप जो भी चल रहे हैं, वह समस्याओं का समाधान कर रहे हैं, अनियमित उम्मीदों पर आपके विशिष्ट तर्क दिए गए हैं। अपेक्षाओं को आदेश देने के विवरण के लिए this page देखें।

छोटी सी कहानी यह है कि आपको अपनी प्रत्येक उम्मीद के अंत में .ordered जोड़ना चाहिए।

+0

हू, यह अब भी बिना काम कर रहा है। मुझे लगता है कि मुझे अपने कोड में गलती हुई थी और इसे आरएसपीईसी पर दोषी ठहराया गया था। टिप के लिए धन्यवाद! – Micah

+0

लिंक github – xxjjnn

+0

पर 404 है पुराने पृष्ठ में 404 है। मुझे विश्वास है कि यह अब यह है: http://rspec.info/documentation/3.3/rspec-mocks/#Ordering – AmitA

-1

Mock Receive Counts

my_mock.should_receive (: प्रतीक) .Once
my_mock.should_receive (: प्रतीक) .twice
my_mock.should_receive (: प्रतीक) .exactly (एन) .times
my_mock.should_receive (: प्रतीक) .at_least (: एक बार)
my_mock.should_receive (: प्रतीक) .at_least (: दो बार)
my_mock.should_receive (: प्रतीक) .at_least (एन) .times
my_mock.should_receive (: प्रतीक) .at_most (: एक बार)
my_m ock.should_receive (: प्रतीक) .at_most (: दो बार)
my_mock.should_receive (: प्रतीक) .at_most (एन) .times
my_mock.should_receive (: प्रतीक) .any_number_of_times rspec 2.5 के लिए भी

काम करता है।

+14

प्रत्येक कॉल के लिए प्राप्त होने वाले विभिन्न तर्कों को शामिल नहीं करता है। – sevenseacat

+1

आप विभिन्न तर्कों के साथ इसे कैसे करते हैं? –

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

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