У мене є код, який піднімає 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.
Я майже впевнений, що подія викликає пожежу, мій інтерфейс реагує так, як це відбувається, але мій делегат фіксує лише останню подію.
Тож мені цікаво:
1. Чи правильний мій метод тестування подій?
2. Чи правильний мій метод підбору прикованих подій?