मोक के साथ, यह सत्यापित करना संभव है कि का उपयोग करके कुछ तर्कों (यानी, कुछ भविष्यवाणियों को संतुष्ट करने वाले तर्क) के साथ कभी भी कहा जाता है।एक टाइम्स क्यों नहीं है। हमेशा मक़ में?
लेकिन इसे कैसे सत्यापित किया जाए, कोई तरीका नहीं है कि विधि को कितनी बार बुलाया जाता है, यह हमेशा कुछ तर्कों के साथ बुलाया जाता है?
डिफ़ॉल्ट Times.AtLeastOnce
प्रतीत होता है।
कोई Times.Always
नहीं है। क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है? धन्यवाद!
संपादित करें: मैंने पिछले सप्ताह Moq मेलिंग सूची में एक सुझाव पोस्ट किया था, लेकिन ऐसा लगता है कि यह अभी तक नियंत्रित नहीं हुआ है। मैं यहां कोई अपडेट पोस्ट करूंगा।
संपादित करें: एक उदाहरण। मान लें कि मैं एक कक्षा का परीक्षण कर रहा हूं जो एक्सएमएल दस्तावेज़ उत्पन्न करता है। मैं यह सुनिश्चित करना चाहता हूं कि केवल वैध दस्तावेज उत्पन्न हो जाएं। दूसरे शब्दों में, परीक्षण करें कि लेखक निर्भरता केवल मान्य अनुक्रम संख्या के साथ वैध दस्तावेज़ों के साथ, लिखने के लिए है।
should_only_write_valid_xml_documents
Mock.Get(this.writer).Verify(
w => w.Write(
It.Is<XDocument>(doc => XsdValidator.IsValid(doc)),
It.Is<int>(n => n < 3)),
Times.Always);
"हमेशा" यह जानकर कितनी बार का मतलब "हमेशा "है, और यदि आप जानते हैं कि इसके बजाय टाइम्स (एन) का उपयोग क्यों नहीं करते? – mtijn
नहीं, ऐसा नहीं है - यह सवाल का मुद्दा है। कल्पना करें कि एक लूप में एक विधि कहा जा रहा है जिसका आकार गतिशील रूप से निर्धारित किया गया है। –
फिर लूप पुनरावृत्ति के अंदर मैं जांच करता हूं कि विधि बार-बार, बार-बार कहा जाता था। यह मान रहा है कि लूप परीक्षण कोड में है। यदि यह कोड के बजाय परीक्षण किया जा रहा है, तो मैं टेस्टेबिलिटी के लिए फिर से डिजाइन करूँगा ताकि मैं प्रत्येक विधि कॉल को जांचने के लिए लूप कोड में हुक कर सकूं। – mtijn