Tôi có một số mã làm tăng PropertyChanged
các sự kiện và tôi muốn có thể kiểm tra đơn vị rằng các sự kiện đang được nêu ra một cách chính xác.
Mã đang nâng cao các sự kiện là như thế
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");
}
}
}
}
Tôi nhận được một bài kiểm tra màu xanh lá cây đẹp từ đoạn mã sau trong bài kiểm tra đơn vị của mình, sử dụng các đại biểu:
[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);
}
Tuy nhiên, nếu sau đó tôi thử và xâu chuỗi các thiết lập các thuộc tính với nhau như vậy:
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
MyOtherProperty = "SomeValue";
}
}
}
public string MyOtherProperty
{
set
{
if (_myOtherProperty != value)
{
_myOtherProperty = value;
NotifyPropertyChanged("MyOtherProperty");
}
}
}
Thử nghiệm của tôi cho sự kiện không thành công - sự kiện mà nó ghi lại là sự kiện dành cho MyOtherProperty.
Tôi khá chắc chắn rằng sự kiện này sẽ kích hoạt, giao diện người dùng của tôi phản ứng giống như vậy, nhưng đại biểu của tôi chỉ nắm bắt sự kiện cuối cùng để khai hỏa.
Vì vậy, tôi tự hỏi:
1. Phương pháp kiểm tra sự kiện của tôi có đúng không?
2. Phương pháp nâng sự kiện xích của tôi có đúng không?