【发布时间】:2014-12-30 05:48:27
【问题描述】:
我有一个实现 ICommand 接口的 RelayCommand 类,它接受一个新的 Action 作为其构造函数的参数。这是非常基本的
例如,这是我在单击按钮时使用命令的方式。这段代码在我的 ViewModel 的构造函数中。
这段代码所做的只是打开一个 FolderBrowserDialog 并让用户选择一个文件夹。
OutputSelect = new RelayCommand(new Action<object>(folderSelect));
这是 viewModel 类中的一个方法
public void folderSelect(object obj)
{
var dlg = new FolderBrowserDialog();
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
// Open document
string filename = dlg.SelectedPath;
_model.OutputFolder = filename;
}
}
单击按钮后,方法 folderSelect 就会运行。
现在我想知道如何对我的应用程序的这个功能进行单元测试?
我是否为动作制作一个 Mock 并将其传递到我的 viewModel.OutputSelect.Execute() 中?
【问题讨论】:
-
为什么不分类呢?制作一个显示文件夹对话框的服务(这只显示文件夹浏览器,因此不需要进行单元测试)。 VM 可以依赖此选择服务,您可以使用模拟接口对其进行单元测试。您不需要在测试或验证中看到 FolderBrowserDialog
标签: c# wpf unit-testing mvvm moq