2011-07-05 18 views
6

मैं अपने कोड में ड्रैग और ड्रॉप कार्यक्षमता जोड़ने के लिए संलग्न व्यवहार का उपयोग कर रहा हूं। अभी तक, सबकुछ ठीक काम कर रहा है, लेकिन मेरी समस्या तब है जब मैं अपने व्यवहार वर्गों का परीक्षण करना चाहता हूं।डब्ल्यूपीएफ व्यवहार इकाई परीक्षण

उदाहरण के लिए, व्यवहार वर्गों में से एक निम्नलिखित की तरह कुछ होगा:

public class DroppableContainerBehavior: Behavior<FrameworkElement> 
{ 

     protected override void OnAttached() 
     { 
      base.OnAttached(); 

      AssociatedObject.AllowDrop = true; 
      AssociatedObject.Drop += new DragEventHandler(AssociatedObject_Drop); 
      AssociatedObject.DragOver += new DragEventHandler(AssociatedObject_DragOver); 
      AssociatedObject.DragLeave += new DragEventHandler(AssociatedObject_DragLeave); 

     } 


     private void AssociatedObject_Drop(object sender, DragEventArgs e) 
     { 
    ... 
    }   
} 

मेरे समस्या जब मैं AssociatedObject_Drop विधि के लिए एक इकाई परीक्षण का निर्माण करना चाहते है, मैं एक DragEventArgs बनाने के लिए की आवश्यकता होगी वस्तु, लेकिन इस वर्ग को सील कर दिया गया है।

मुझे लगता है कि मैं कुछ गलत कर रहा हूं .. मेरा सवाल है, क्या मुझे अपने व्यवहार वर्गों का परीक्षण करना चाहिए? व्यवहार यूआई से संबंधित हैं, और आमतौर पर यूआई का परीक्षण करने के लिए यह लायक नहीं है। क्या मैं सही हू? शायद मुझे अपने व्यवहार कोड को और अधिक टेस्ट करने योग्य बनाने के लिए बदलना होगा? कोई विचार?

आपकी मदद के लिए धन्यवाद!

उत्तर

4

मैं कोड को दोबारा कर दूंगा और AssociatedObject_Drop से किसी भी व्यावसायिक तर्क को अपने स्वयं के कार्य में ले जाऊंगा और फिर उन कार्यों के लिए अपने यूनिट परीक्षण लिखूंगा।

1
  1. आप एक वस्तु बना सकते हैं यहां तक ​​कि इसकी कक्षा को सील कर दिया गया है।

  2. आप अन्य कार्य करने के लिए अपने कोड निकाल कर अपने इकाई परीक्षण

  3. आप भी AssociatedObject_Drop() विधि तर्क का परीक्षण कर सकते में उठाने के ड्रॉप() घटना का परीक्षण करने और इस कार्य के लिए इकाई परीक्षण लिख सकते हैं।
+0

और क्या आप जानते हैं कि मैं ऑब्जेक्ट कैसे बना सकता हूं यहां तक ​​कि इसकी कक्षा को सील कर दिया गया है? –

+0

एक मुहरबंद वर्ग विरासत में नहीं लिया जा सकता है लेकिन आप इस वर्ग का एक उदाहरण बना सकते हैं। http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx – Arseny

+1

उम देखें, नई ड्रैगएन्टएआरजी() को करने पर समस्या को खेद है कि यह मुहरबंद नहीं है। मैं इसे तुरंत चालू नहीं कर सकता क्योंकि निर्माता आंतरिक है। –

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