2011-12-21 7 views
7

मेरे पास एक नकली कक्षा है जिसमें एक ईवेंट होता है। मेरा कोड उस घटना की सदस्यता लेना चाहिए और मैं इसका परीक्षण करना चाहता हूं। मैं NUnit के साथ FakeItEasy का उपयोग कर रहा हूं और मैं यह जांचने का एक तरीका ढूंढ रहा हूं कि मेरा कोड वास्तव में उस घटना की सदस्यता लेता है।कैसे दावा करें कि एक घटना को FakeItEasy के साथ सब्सक्राइब किया गया है?

धन्यवाद!

+3

बस एक सुझाव: यह जांचने के बजाय कि आपका कोड ईवेंट की सदस्यता लेता है, केवल यह जांचें कि जब यह ऐसी घटना प्राप्त करता है तो यह वास्तव में कुछ करता है। इस तरह आप परीक्षण कर सकते हैं जैसे "जब घटना उठाई जाती है तो फू को बुलाया जाता है" जो वर्णन करता है कि क्या होना चाहिए। –

उत्तर

10

मैं टिप्पणी के साथ सहमत हूं कि आप केवल घटना को उठाएंगे और जांच लेंगे कि आप जिस हैंडलर को सब्सक्राइब करना चाहते हैं उसे शामिल किया गया है। लेकिन वहाँ जाँच करने के लिए मौसम हैंडलर जुड़ा था एक तरीका है, बहुत सुंदर नहीं सोचा:

public interface IHaveAnEvent 
{ 
    event EventHandler MyEvent; 
} 

// In your test... 
var fake = A.Fake<IHaveAnEvent>(); 

var handler = new EventHandler((s, e) => { }); 

fake.MyEvent += handler; 

A.CallTo(fake).Where(x => x.Method.Name.Equals("add_MyEvent")).WhenArgumentsMatch(x => x.Get<EventHandler>(0).Equals(handler)).MustHaveHappened(); 

तुम सिर्फ जांच करने के लिए है कि किसी भी हैंडलर आप "WhenArgumentsMatch" भाग को छोड़ सकते हैं जुड़ा था चाहते हैं।

0

अधिकतम आप यह जांच सकते हैं कि ईवेंट शून्य के बराबर है या नहीं, यह वापस लौटाएगा कि इसमें कुछ सब्सक्राइब किया गया है या नहीं।
अन्यथा, आप नहीं जानते कि किसी ईवेंट के लिए कितने या हैंडलर सब्सक्राइब किए गए हैं।

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