Как я могу провести модульное тестирование RelayCommand <DragEventArgs>DropFile? - PullRequest
0 голосов
/ 14 января 2011

Я пробую MVVM Light, отчасти вдохновленный возможностями EventToCommand, которые, кажется, облегчают обработку перетаскивания из моего приложения в View Model и в XAML. Однако меня смущает, как проводить модульное тестирование RelayCommand. Моя RelayCommand объявлена ​​просто

public RelayCommand<DragEventArgs> DropFile { get; private set; }

и затем функциональность назначается в конструкторе ViewModel, не встроенным, а с использованием метода в ViewModel

this.DropFile = new RelayCommand<DragEventArgs>(dropFileHandler);

Когда я пишу модульный тест для DropFile RelayCommand, я не вижу, что вызывать? Должен ли я звонить

testTarget.DropFile.Execute(params)

и как можно создать параметры, так как DragEventArgs имеет только пустой конструктор, а его ключевые свойства являются просто получателями, а не установщиками?

1 Ответ

2 голосов
/ 17 января 2011

Это верно как для стандартных команд, так и для специфических команд реле MVVM-Light.

Логика, которая должна быть проверяемой модулем, должна быть реализована в модели представления как метод, а затем вызвана из команды.

то, что осталось в команде, должно быть логикой для извлечения информации из пользовательского интерфейса, то есть преобразования параметра в соответствующий тип и его передачи.

Таким образом, модель представления как сущность является модульно тестируемой, команды очень тонкие, все довольны =].

N.B. Если вы хотите быть особенно строгими с вашим модульным тестированием, преобразование должно происходить в методе ViewModel, но обычно, если он может обрабатывать нулевой параметр, тогда все в вашем наборе, поэтому я ленюсь.

Надеюсь, это поможет

...