2014-10-18 5 views
37

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

method.get = sinon.stub(); 
method.get(25,function(){/* success callback */},function(){/* error callback */});   
method.get(10,function(){/* success callback */},function(){/* error callback */}); 

मैं method.get.calls... उपयोग नहीं कर सकते क्योंकि तब यह पहले एक get(25) और दूसरा get(10) के बीच अंतर नहीं है। लेकिन अगर मैं method.get.withArgs(25).calls... का उपयोग करता हूं तो यह मेल नहीं खाता है, क्योंकि withArgs() मैचों सभी तर्क, जो ऐसा नहीं करता है (और ऐसा कभी भी कॉलबैक के साथ नहीं)।

मैं केवल 1 तर्क के आधार पर प्रतिक्रियाओं को जांचने और सेट करने के लिए साइनऑन स्टब्स कैसे प्राप्त करूं?

उत्तर

64

http://sinonjs.org/docs/#sinon-match-api

आप उपयोग कर सकते हैं sinon.match.any:

method.get.withArgs(25, sinon.match.any, sinon.match.any); 
+2

धन्यवाद। यह अच्छा होगा अगर मैं 'method.get.withFirstArgs (25)' कर सकता हूं और इस प्रकार तक जब तक 'arg [0] '' 25'' मिलान होगा, लेकिन मुझे लगता है कि यह अस्तित्व में नहीं है। – deitch

+0

महान काम करता है! [यहां एक निश्चित लिंक है] (http://sinonjs.org/releases/v3.2.1/matchers/#sinonmatchany) नवीनतम 'sinon.match.any' दस्तावेज़ों में। – WimpyProgrammer

2

तुम सिर्फ पहला तर्क जाँच करना चाहते हैं तो आप उपयोग कर सकते हैं

method.get.withArgs(25).calledOnce 

या

method.get.calledWith(25) 
संबंधित मुद्दे