2009-09-06 10 views
5

मैं नैनिट्स को अपवाद हैंडलिंग के नए तरीके का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे इसके बारे में जानकारी ढूंढना और moq के साथ इसका उपयोग करना मुश्किल लगता है।नुनिट और moq के साथ अपवाद हैंडलिंग कैसे करें?

मेरे पास अभी एमओक है जो एक मॉक विधि पर अपवाद फेंकता है लेकिन मुझे नहीं पता कि नूनिट का उपयोग इसे पकड़ने और इसे देखने के लिए कैसे किया जाए।

उत्तर

14

ऐसा करने के कुछ अलग तरीके हैं; मैं Assert.Throws का उपयोग करता हूँ।

var exception = Assert.Throws<YourTypeOfException>(()=> Action goes here); 

उदा।

var exception = Assert 
       .Throws<ArgumentNullException>(()=> new ChimpPuncher(null)); 

यदि आप चाहें तो अपवाद ऑब्जेक्ट को आगे पूछ सकते हैं, उदा।

Assert.That(exception.Message, Text.Contains("paramname"); 
0

आप कोशिश/पकड़ ब्लॉक में मॉक किए गए विधि कॉल को क्यों संलग्न नहीं कर सकते हैं और विशिष्ट अपवाद को फेंक दिया जा सकता है?

2

उल्लेख करने का सबसे अच्छा तरीका है: [ExpectedException(typeof(ApplicationException))] परीक्षण विधि से ऊपर है।

+0

इस दृष्टिकोण के साथ समस्या यह है कि, यदि इस प्रकार की अपवाद को विधि के अपरिवर्तनीय विशेषता से सजाए गए विधि के _any_ भाग द्वारा फेंक दिया गया है, तो परीक्षण पास हो जाएगा। Assert का उपयोग करना। तीर <> तंत्र सतह क्षेत्र को कम कर देता है, क्योंकि अपवाद को इसके द्वारा चलाए गए तरीके के भीतर फेंक दिया जाना चाहिए। –

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