मैं एक ऐसी कक्षा का परीक्षण करने के लिए एनयूनीट और मोक का उपयोग कर रहा हूं जिसमें कुछ घटनाएं हैं और मैं यह जांचने का सबसे अच्छा तरीका खोजने की कोशिश कर रहा हूं कि कोई ईवेंट निकाल दिया गया था या नहीं। मैं इस समाधान के साथ आया लेकिन यह थोड़े गंदे लगता है क्योंकि मुझे परीक्षण के लिए एक इंटरफ़ेस बनाना है। किसी भी तरह से मैं कम कोड के साथ एक ही चीज़ कर सकता हूं या इंटरफ़ेस बनाना नहीं है?एनयूनीट और मोक का उपयोग कर यूनिट परीक्षण कार्यक्रमों के लिए बेहतर तरीका?
यह बुरा नहीं है लेकिन मुझे लगता है कि किसी के पास बेहतर समाधान हो सकता है। किसी भी विचार की सराहना की जाती है। धन्यवाद।
[Test]
public void StartedAndStoppedEventsShouldFireWhenStartedAndStopped()
{
var mockStartedEventSubscriber = new Mock<IEventSubscriber>();
var mockStoppedEventSubscriber = new Mock<IEventSubscriber>();
_NetworkMonitor.Started += mockStartedEventSubscriber.Object.Handler;
_NetworkMonitor.Stopped += mockStoppedEventSubscriber.Object.Handler;
_NetworkMonitor.Start();
_NetworkMonitor.Stop();
Func<bool> func =() => { return (eNetworkMonitorStatus.Stopped == _NetworkMonitor.Status); };
Utilities.WaitUntilTrue(func, _NetworkMonitor.Interval * 2, 10);
_NetworkMonitor.Started -= mockStartedEventSubscriber.Object.Handler;
_NetworkMonitor.Stopped -= mockStoppedEventSubscriber.Object.Handler;
mockStartedEventSubscriber.Verify(h => h.Handler(_NetworkMonitor, EventArgs.Empty), Times.Once());
mockStoppedEventSubscriber.Verify(h => h.Handler(_NetworkMonitor, EventArgs.Empty), Times.Once());
}
public interface IEventSubscriber
{
void Handler(object sender, EventArgs e);
}
मैं प्रत्येक घटना मैं परीक्षण था के लिए एक नया झंडा और नई विधि बनाने के लिए होगा। वह बहुत अधिक ब्लोट जोड़ देगा। इस उदाहरण में मैं एक ही इंटरफ़ेस का उपयोग कर सकता हूं। लेकिन मैं देख रहा हूँ कि आप क्या कह रहे हैं। –
@Dusty Lau - आप एक सामान्य ध्वज (अधिसूचना प्राप्त) और हैंडलर का उपयोग कर सकते हैं क्योंकि आप परीक्षण करना चाहते हैं कि यह ईवेंट ट्रिगर किया गया है। यदि आप एक इंटरफ़ेस का परीक्षण कर रहे थे उदा। INotifyPropertyChanged, आप एक उपयोगिता वर्ग PropertyChangeListener लिख सकते हैं जो इंटरफेस के किसी भी कार्यान्वयन के साथ काम किया। – Gishu