У меня есть класс (для простоты я буду называть его MyCustomCommand), который в основном принимает двух делегатов для выполнения и CanExecute. Этот класс реализует ICommand. Это позволяет мне объявить свойство в моей модели, с которой я связываюсь с XAML.Единичное тестирование с помощью Mock, когда viewmodel содержит ICommand
Проблема заключается в том, что я столкнулся с сценарием, когда мне нужно выполнить Mock модель представления из-за зависимости в одной из моих команд под названием ApplyChangesCommand. Я не уверен, что зависимость еще хуже. На данный момент это относительно необходимо.
Из-за этой зависимости я использую Mock Setups для создания обратного вызова, который в основном «ничего не делает», чтобы обойти зависимость.
Теперь, когда у меня была модель Mock'd, все свойства экземпляра, конечно, теперь равны нулю. Это включает в себя мои команды.
Простой пример был бы:
private void _somethingToExecute;
public ICommand ApplyChangesCommand { get { return MyCustomCommand(_somethingToExecute, e=>true); }
Есть ли способ, с Мок, что я могу на самом деле вызвать _somethingToExecute ApplyChangesCommand в? Callbase не режет его, и я не могу придумать другого способа сделать это.
Обходным способом является создание «_somethingToExecute» и создание ApplyChangesCommand в моем тесте, но я не поклонник.
Любые советы, оцененные.
Благодаря
Мне пришлось прочесть его пару раз, чтобы попытаться понять, о чем вы спрашиваете, поэтому я могу быть здесь. У вас есть проблемы с модулем тестирования команды или ViewModel, содержащим команду?Если команда (это то, о чем я думаю, вы спрашиваете), не можете ли вы просто высмеять входящего делегата в конструктор 'MyCustomCommand' и просто проверить, вызван ли делегированный делегат? Это будет правильный единичный тест для команды. Тестирование ViewModel было бы аналогичным - высмеивать команду и вызывать вызов 'Execute'' _somethingToExecute'. – Gjeltema
Большое спасибо за предложение. Позвольте мне понять, что ... похоже, что это может быть на правильном пути! Моя проблема действительно вращается вокруг единицы, проверяющей команду, потому что я макет модели просмотра. Поскольку модель View mock'ed сама команда имеет значение null – tronious