在 C# 中测试交互式 ICommand

Testing interactive ICommand in C#

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

这是视图模型:

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 的情况下从测试项目中调用此导出命令。我的第一个想法是我必须通过参数发送一些命令参数,但我想问你,有没有更优雅的方法(因为在命令包含一些对话框调用的每种情况下我都必须获取命令参数)?

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

顺便说一下;在视图模型中放置对话框不符合 MVVM - 考虑查找相关代码