मेरे पास कुछ कोड हैं जो PropertyChanged
घटनाओं को बढ़ाते हैं और मैं इकाई परीक्षण में सक्षम होना चाहूंगा कि घटनाओं को सही ढंग से उठाया जा रहा है।
घटनाओं को बढ़ाने वाला कोड जैसा है
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
}
}
}
}
मुझे अपने यूनिट परीक्षणों में निम्नलिखित कोड से एक अच्छा हरा परीक्षण मिलता है, जो प्रतिनिधियों का उपयोग करता है:
[TestMethod]
public void Test_ThatMyEventIsRaised()
{
string actual = null;
MyClass myClass = new MyClass();
myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
{
actual = e.PropertyName;
};
myClass.MyProperty = "testing";
Assert.IsNotNull(actual);
Assert.AreEqual("MyProperty", actual);
}
हालांकि, अगर मैं तब कोशिश करता हूं और एक साथ गुणों की सेटिंग को चेन करता हूं:
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
MyOtherProperty = "SomeValue";
}
}
}
public string MyOtherProperty
{
set
{
if (_myOtherProperty != value)
{
_myOtherProperty = value;
NotifyPropertyChanged("MyOtherProperty");
}
}
}
ईवेंट के लिए मेरा परीक्षण विफल हो जाता है - जो इवेंट कैप्चर करता है वह MyOtherProperty के लिए ईवेंट है।
मुझे पूरा यकीन है कि यह घटना आग की तरह है, मेरा UI इस तरह की प्रतिक्रिया करता है, लेकिन मेरे प्रतिनिधि केवल अंतिम घटना को आग में कैद करते हैं।
तो मैं सोच रहा हूँ:
1. क्या घटनाओं के परीक्षण का मेरा तरीका सही है?
2. जंजीर घटनाओं को बढ़ाने का मेरा तरीका सही है?