我如何使用Moq对我的RelayCommand进行单元测试?

时间:2014-11-03 14:42:26

标签: c# wpf unit-testing mvvm moq

我有一个实现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。

现在我想知道如何对我的应用程序的这个功能进行单元测试?

我是否为动作制作了模拟并将其传递给我的viewModel.OutputSelect.Execute()?

1 个答案:

答案 0 :(得分:0)

&#34;模型视图ViewModel&#34;是一种架构模式,它使用户界面层(UI)与业务层之间有明确的分离。按钮命令属性为 ICommand 类型,当用户点击按钮时,它会在后面调用 ICommand.Execute()方法。

因此,要进行单元测试,您可以通过直接调用执行(对象参数)方法来执行此操作 在你的情况下它是

OutputSelect.Execute(null)