У меня есть приложение, для которого я строю модульные тесты. Для некоторых операций я использую ApplicationCommands
(например, ApplicationCommands.New
). Есть ли простой способ вызвать CanExecute
и Execute
по команде маршрутизированного интерфейса в модульном тесте? Я думал о внедрении макета IInputElement
, но это похоже на большую работу. Есть ли способ лучше?Как я могу проверить RoutedUICommand?
[TestMethod]
public void NewDocument()
{
Assert.IsTrue(ApplicationCommands.New.CanExecute(null, mockTarget));
ApplicationCommands.New.Execute(null, mockTarget);
Assert.IsTrue(workspace.OpenDocuments.Count == 1);
}
Похоже, что это очень похоже на этот вопрос why-does-my-command-canexecute-always-return-false-in-unit-test? Кто-нибудь знает способ, чтобы выполнить команду маршрутизируемого щ без щ на самом деле быть там?
У меня есть командная и командная привязка, но я не знаю, как создать источник команды и целевую команду.
У меня на самом деле нет команды в моей модели. У меня есть «CommandBinding» и «CommandBindingCollection». Коллекция - это то, что я использую в xaml. Если я попытаюсь проверить объект 'ICommand' из привязки команды маршрутизируемого интерфейса,' CanExecute' всегда ложь. – travis
Вот что я получил с моим вторым предложением. Ваш код не очень-то тестируется с настройкой, как у вас есть. Для того, чтобы маршрутизированная команда работала, весь ваш вид должен быть создан и запущен в среде WPF, так как это то, что перехватывает команду привязки. Если вы вытащите обработчики 'CanExecute' /' Execute' в объект команды, это намного проще проверить. –