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. 연쇄 사건 을 제기하는 방법이 올바른가?