2013-01-17 33 views
9

के साथ किसी भी_इंसेन्स पर रुपेक मोक्स मैं आरएसपीईसी परीक्षणों में मोक्स का उपयोग करना चाहता हूं।बिल्कुल (एन) समय

klass.any_instance.should_receive(:save).exactly(2).times.and_return(true) 

लेकिन मैं की तरह एक त्रुटि संदेश मिलता है:

'संदेश "बचाने" < #Object ने स्वागत किया> लेकिन पहले से ही < #Object> को मिल गया है'

अस्थाई मैं ठूंठ का उपयोग लेकिन सटीकता के लिए mocks

+0

संभव डुप्लिकेट [कैसे कहते हैं "किसी भी \ _instance" "_receive \" के किसी भी संख्या चाहिए आरएसपीसी में समय] (http://stackoverflow.com/questions/9800992/how-to-say-any-instance-should-receive-any-number-of-times-in-rspec) – SztupY

उत्तर

19

any_instance.should_receive की documentation का उपयोग करना चाहते है:

Use any_instance.should_receive to set an expectation that one (and only one) 
instance of a class receives a message before the example is completed. 

तो तुम उल्लेख किया है कि ठीक एक वस्तु save कॉल दो बार, और नहीं है कि 2 वस्तुओं save कॉल एक बार प्राप्त करना चाहिए प्राप्त करना चाहिए।

आप कॉल विभिन्न उदाहरणों के द्वारा किया गणना करना चाहते हैं, तो आप creative की तरह रहना होगा:

save_count = 0 
klass.any_instance.stub(:save) { save_count+=1 } 
# run test 
save_count.should == 2 
की
+0

मुझे दो अलग-अलग वस्तुएं चाहिए एक उदाहरण में चाहिए_receive (: सहेजें)। असल में मैं लूपिंग के माध्यम से 'एन' नया ऑब्जेक्ट बना रहा हूं और इसे जांचना चाहता हूं, इसे सेव विधि को दबाएं। मेरी खराब इंग्लिश के लिए माफ़ कीजिये। –

+0

तब आपको अपना दूसरा उदाहरण उपयोग करना होगा – SztupY