Я пишу (пытаюсь писать) модульные тесты для приложения WPF.
Бизнес-объекты, которые пользовательский интерфейс связывает для реализации IDataErrorInfo, так что, когда я устанавливаю ValidatesOnDataErrors=True в своем XML-представлении, индексатор ошибок (this[]) вызывается каждый раз, когда вызывается установщик для связанного бизнес-объекта. Эта часть великолепна.
Теперь, если я вызываю установщик того же свойства из unitTest, он никогда не вызывает индексатор ошибок. Как заставить индексатор IDataErrorInfo оцениваться из модульного теста?
просто для иллюстрации вот один из моих простых индексаторов ошибок, который содержит свойство Name. Установка «myObject.Name = string.Empty;» вызывает установщик, но не индексатор ошибок, когда я делаю это в своих модульных тестах.
public string Name
{
get { return _name; }
set
{
_name = value;
IsDirty = true;
OnPropertyChanged("Name");
}
}
#region IDataErrorInfo
public Dictionary<string, string> ErrorCollection;
public string this[string property]
{
get
{
string msg = null;
switch (property)
{
case "Name":
if (string.IsNullOrEmpty(Name))
msg = "ICU Name is required.";
else if (Name.Length < 4)
msg = "ICU Name must contain at least 4 characters.";
else if (_parent.Units.AsEnumerable().Count(u => u.Name == Name) > 1)
msg = Name + " already exists, please change to a different Name.";
break;
}
if (msg != null && !ErrorCollection.ContainsKey(property))
ErrorCollection.Add(property, msg);
if (msg == null && ErrorCollection.ContainsKey(property))
ErrorCollection.Remove(property);
return msg;
}
}
public string Error
{
get { return null; }
}
#endregion
Спасибо!