Tôi có một số mã tăng PropertyChanged
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âng lên chính xác.Kiểm tra đơn vị sự kiện được nêu trong C#
Các mã được nâng cao sự kiện là như
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 xanh đẹp từ đoạn mã sau trong các thử nghiệm đơn vị của tôi, 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 tôi sau đó thử và chuỗi cài đặt 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ó chụp là sự kiện cho MyOtherProperty.
Tôi chắc chắn rằng sự kiện đã xảy ra, giao diện người dùng của tôi phản ứng như vậy, nhưng đại biểu của tôi chỉ chụp sự kiện cuối cùng để kích hoạt.
Vì vậy, tôi tự hỏi:
1. Phương pháp thử nghiệm của tôi có đúng không?
2. Phương pháp nâng cao bị xích sự kiện có đúng không?
Phiên bản ngắn hơn: myClass.PropertyChanged + = (đối tượng người gửi, e) => receivedEvents.Add (e.PropertyName); – ShloEmi