J'ai un code qui soulève PropertyChanged
événements et je voudrais être en mesure de test de l'unité que les événements sont élevés correctement.
Le code qui est d'élever les événements, c'est comme
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");
}
}
}
}
Je reçois un joli vert d'essai à partir du code suivant dans mes tests unitaires, qui utilise des délégués:
[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);
}
Cependant, si je puis essayer de la chaîne et le réglage des propriétés de l'ensemble de la sorte:
public string MyProperty
{
set
{
if (_myProperty != value)
{
_myProperty = value;
NotifyPropertyChanged("MyProperty");
MyOtherProperty = "SomeValue";
}
}
}
public string MyOtherProperty
{
set
{
if (_myOtherProperty != value)
{
_myOtherProperty = value;
NotifyPropertyChanged("MyOtherProperty");
}
}
}
Mon test pour le cas d'échec - l'événement qu'il capture est le cas pour la MyOtherProperty.
Je suis sûr que l'événement se déclenche, mon INTERFACE réagit comme il le fait, mais mon délégué ne capture de la dernière épreuve de feu.
Alors je me demandais:
1. Est ma méthode de dépistage correct?
2. Est ma méthode de collecte de enchaînés événements correct?