在C#中测试交互式ICommand

时间:2017-03-31 06:07:00

标签: c# wpf testing command

我想在我的WPF项目中测试一些包含用户交互所需部分的命令。

这是viewmodel:

class MainViewModel : ViewModelBase
{
    public ICommand Export { get; private set; }
    public MainViewModel()
    {
        Export = SynchronousCommand.Create((o) => ExportModel(o));
    }

    private void ExportModel(object parameter)
    {
        string exportPath = null;
        SaveFileDialog fileDialog = new SaveFileDialog();
        fileDialog.Filter = "UDPROJ (*.udproj) |*.udproj";
        if (fileDialog.ShowDialog() == true)
        {
            exportPath = fileDialog.FileName;
        }

        // Other logic which should run in test...
    }
}

所以我想在不调用SaveFileDialog的情况下从测试项目中调用此Export命令。我的第一个想法是我必须通过参数发送一些命令参数,但我想问你,是否有更优雅的方式(因为我必须在命令包含一些对话框调用的每种情况下获取命令参数)?< / p>

1 个答案:

答案 0 :(得分:1)

你的方法有一个没有使用的对象参数;考虑测试它;如果为空则显示对话框,否则将其用作对话框结果文件名

顺便说一下;在viewmodel中放置对话框不符合MVVM - 考虑查找有关该

的代码