Свойства зависимостей модульного тестирования - PullRequest
1 голос
/ 24 ноября 2010

Я унаследовал некоторые существующие проекты, в которых разработчик использовал Dependency свойства, а не INotifyPropertyChanged для уведомления об изменениях в WPF.

Я нахожусь в состоянии, когда мне нужно заново адаптировать юнит-тесты кполное решение.

Некоторые свойства зависимостей в ViewModel асинхронно обновляются напрямую из некоторого фонового рабочего процесса, поэтому мне нужно подключиться к этим обновлениям через мои модульные тесты.(Я не могу изменить код и использовать обратные вызовы).

Как этого достичь?

Многие разработчики предпочитают свойства зависимостей над INotifyPropertyChanged, но они кажутся очень сложными (еслине невозможно) написать модульные тесты для.

Я что-то упустил?

Ответы [ 2 ]

3 голосов
/ 24 ноября 2010

Вы можете использовать DependencyPropertyDescriptor, чтобы присоединить измененный обработчик к свойству зависимости:

DependencyPropertyDescriptor.FromProperty(TextBox.TextProperty, typeof(TextBox)).AddValueChanged(textBox, OnTextChanged);

Однако есть множество причин , чтобы неиспользуйте свойства зависимостей в ваших моделях представления.Учитывая, что вы унаследовали код, я бы предложил написать модульные тесты для подтверждения поведения кода, а затем переключиться на использование INotifyPropertyChanged.

1 голос
/ 24 ноября 2010

Поскольку свойства зависимостей можно контролировать в xaml, может не быть хорошего способа всестороннего модульного тестирования их без запуска каких-либо окон, которые их используют. В этот момент вы больше не юнит-тестирование.

Тем не менее, вы можете перейти к свойству зависимости, вызвав методы DependencyObject GetValue () и SetValue ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...