В принципе, если я использую MVVM и выставляю общедоступные ICommands, должны ли мои делегаты быть публичными или частными?WPF MVVM - модуль Тестирование команды - частные и общедоступные методы?
ответ
Я бы их частные - они не являются частью вашего класса public interface, вот для чего предназначены общедоступные объекты ICommand.
Лично я бы пошел с частными методами, и я скажу вам, почему. Вы показываете ICommand
, который мне говорит, что потребительский вид должен вызывать CanExecute до вызова Execute. Если они этого не сделают, они идут против API и стреляют в ногу, и в этот момент это не в ваших руках. Точно так же, как если бы кто-то использовал отражение, чтобы установить важную частную переменную в нуль и сломал ваш дизайн класса из-за этого ... стрелял в ногу. Итак, зачем делать членов закрытыми? Потому что нет необходимости выставлять членов, которые не следует вызывать напрямую.
В основном, когда вы модульное тестирование членов не делать так индивидуальна, вы делаете это в том, как API предназначается для пользователей, которые будут выполнены. Таким образом, вы не тестируете членов, но к тому же вы тестируете команду, которая снова означает, что они должны быть протестированы в паре в определенном порядке:
if (CanExecute)
{
Execute;
}
Довольно правку - или я просто что-то пропустил ? :) –
@chibacity: Иногда я склонен говорить. Я спросил что-то подобное раньше, когда дело доходит до модульного тестирования, и кто-то сказал мне, что если люди идут против API, то это на них. Вы можете только зайти так далеко, чтобы защитить кого-то от уничтожения соответствующей библиотеки или приложения. –
У меня есть MVVM для чего-то простого управления увеличением, уменьшением кнопок и значением слайдера.
Если у вас есть тест ICommand и INotifyPropertyChanged, вы можете сделать вид из UnitTest:
[TestMethod]
public void TestViewModel3()
{
int min = -10;
int max = 10000;
int initVal = 50;
bool initState = false;
ToglledSliderModel model = new ToglledSliderModel(initState, initVal, min, max);
ToglledSliderViewModel viewModel = new ToglledSliderViewModel();
viewModel.Model = model;
int status = 567;
viewModel.PropertyChanged += delegate
{
status = 234;
};
for (int i = 1; i < 100; i++)
{
status = 567;
ICommand ic = viewModel.IncreaseValue;
ic.Execute(this);
Thread.Sleep(2);
Assert.AreEqual(status, 234);
Assert.AreEqual(model.SliderValue, initVal + i);
}
}
вы можете видеть, я проверить INotifyPropertyChanged поведения и ICommand выполняющегося
- 1. Частные и общедоступные методы и проверяемый код
- 2. Частные и общедоступные методы в объектах RequireJS
- 3. Частные методы появляются как общедоступные методы
- 4. Когда следует использовать общедоступные/частные/статические методы?
- 5. Следует ли использовать частные или общедоступные методы
- 6. WPF MVVM и модульное тестирование
- 7. Не тестировать общедоступные методы
- 8. Частные и общедоступные методы и переменные в JavaScript
- 9. Java: место конструкторов, статические методы, общедоступные методы, частные?
- 10. Частные и общедоступные пакеты модулей?
- 11. Частные/общедоступные переменные Javascript
- 12. Интерфейсы и общедоступные методы
- 13. Команды и принципы MVVM - RelayCommands
- 14. Унаследованный класс, который изменяет все унаследованные общедоступные методы на частные
- 15. Как тестировать модуль DelegateCommand, который вызывает методы async в MVVM
- 16. Частные/общедоступные переменные в C#
- 17. Частные/общедоступные модификаторы с TypScript и eslint
- 18. Классы C++ (общедоступные, частные и защищенные)
- 19. Частные и общедоступные данные в ведро S3
- 20. Частные и общедоступные объявления в C#
- 21. htaccess - фильтровать общедоступные и частные запросы
- 22. JVM и частные методы
- 23. Частные методы и поля
- 24. Тестирование единицы измерения: частные методы и способы рефакторирования
- 25. Как отличить общедоступные методы и частные методы во время тестирования api?
- 26. MVVM и пользовательские команды?
- 27. JavaScript: общедоступные методы и прототипы
- 28. Частные и общедоступные переменные внутри модуля и подпрограмма в OpenMP
- 29. Команды в MVVM
- 30. Задача WPF и MVVM
+1 Проверьте открытый интерфейс. –
У моего класса нет интерфейса, хотя это просто класс. – michael
@michael. Коллекция 'public' методов и свойств в классе считается интерфейсом этого класса, поскольку это то, как пользователи взаимодействуют с этим классом. – dlev