О модульном тестировании.
Привязка данных WPF очень хороша для привязки данных, таких как строка в текстовое поле.Это менее хорошо с пользовательскими командами.Еще хуже, когда пользовательский интерфейс говорит, что нужно что-то делать, например, «рисовать линию» - возможно, вам удастся придумать какой-нибудь неуклюжий ItemPresenter, связанный с коллекцией моделей вида фигуры, но я думаю, что это будет сложно и приведет к большому количеству ненужногоартефакты.Итог: MVVM, вероятно, не для этого проекта.
Вместо этого вы можете использовать подход "пассивного просмотра" .Вы определяете независимый от управления интерфейс виртуальной машины для своего представления.Что-то вроде
interface IView
{
void AddLine(int x1, int y1, int x2, int y2);
void DrawText(...);
}
Ваша точка зрения должна иметь простую реализацию этого интерфейса с минимальной логикой: каждый метод имеет максимум 2-3 строки, без условий или циклов.Это «тупой» пассивный вид, который нельзя проверить.
Остальная часть системы (а именно Presenter) общается с интерфейсом IView и ничего не знает о WPF или элементах управления.Ну, для удобства он может использовать некоторые простые типы WPF, такие как Color или Rectangle.
Вы можете использовать библиотеку макетов (например, Rhino Mocks) для написания тестов, которые удостоверяются, что ваш Presenter делает правильные вызовы для вашего пассивного представления.Вы создаете «фиктивный» вид и передаете его докладчику.