मैं अपने टाइमर मॉक को सौंपा गया ईवेंट हैंडलर आग लगाने की कोशिश कर रहा हूं। मैं यहां इस निजी विधि का परीक्षण कैसे कर सकता हूं?मैं एक मॉक को सौंपा गया ईवेंट हैंडलर कैसे चला सकता हूं?
public interface ITimer
{
void Start();
double Interval { get; set; }
event ElapsedEventHandler Elapsed;
}
क्लाइंट क्लास इस ऑब्जेक्ट को इवेंट हैंडलर असाइन करता है। मैं इस वर्ग में तर्क का परीक्षण करना चाहता हूं।
_timer.Elapsed += ResetExpiredCounters;
और सौंपा विधि निजी
private void ResetExpiredCounters(object sender, ElapsedEventArgs e)
{
// do something
}
है मैं अपने नकली में इस ईवेंट हैंडलर है और यह किसी भी तरह चलाना चाहते हैं। मैं यह कैसे कर सकता हूँ?
अद्यतन:
मुझे एहसास हुआ कि इससे पहले कि मैं ईवेंट हैंडलर सौंपा मैं घटना को ऊपर उठाने की गई थी। मुझे लगता है कि सही किया लेकिन मैं अभी भी यह त्रुटि प्राप्त:
मैं इसे इस तरह बढ़ा:
_timer.Raise(item => item.Elapsed += null, ElapsedEventArgs.Empty);
या
_timer.Raise(item => item.Elapsed += null, EventArgs.Empty);
दोनों काम नहीं करेगा।
अद्यतन:
यहाँ बात है कि मेरे लिए काम किया है। ध्यान दें कि यह उपयोगी नहीं है यदि आप ईवेंट हैंडलर को जानकारी पास करने की कोशिश कर रहे हैं जैसे जॉन ने टिप्पणियों में बताया। मैं बस सिस्टम.Timers.Timer वर्ग के लिए रैपर नकली करने के लिए इसका उपयोग कर रहा हूँ।
_timer.Raise(item => item.Elapsed += null, new EventArgs() as ElapsedEventArgs);
अंत में, यदि आपको घटना तर्कों का उपयोग करने की आवश्यकता है, तो यह हमेशा मदद नहीं करेगा क्योंकि यह हमेशा शून्य होगा। हालांकि, यह एकमात्र तरीका है क्योंकि ElapsedEventArgs में केवल एक आंतरिक कन्स्ट्रक्टर है।
"प्रकार की वस्तु 'System.EventArgs' जारी रख सकते हैं 'System.Timers.ElapsedEventArgs' टाइप करने के लिए को परिवर्तित करें "- कौन सा हिस्सा अस्पष्ट है? – Groo
मुझे अभी भी यह त्रुटि मिलती है भले ही मैं ElapsedEventArgs पास करता हूं। मैं उस घटना को कैसे बढ़ा सकता हूं? –
आपके 'ITimer' इंटरफ़ेस में 'ElapsedEventHandler' वास्तव में' System.Timers.ElapsedEventHandler' है? – Groo