0

我正在尝试 MVVM Light,部分灵感来自 EventToCommand 功能,这似乎可以更轻松地在视图模型和 XAML 中处理从我的应用程序外部进行的拖放操作。但是,我对如何对 RelayCommand 进行单元测试感到困惑。我的 RelayCommand 声明很简单

public RelayCommand<DragEventArgs> DropFile { get; private set; }

然后在 ViewModel 构造函数中分配功能,而不是内联,而是使用 ViewModel 上的方法

this.DropFile = new RelayCommand<DragEventArgs>(dropFileHandler);

当我为 DropFile RelayCommand 编写单元测试时,我看不到要调用什么?我应该打电话吗

testTarget.DropFile.Execute(params)

以及如何构造参数,因为 DragEventArgs 只有一个空构造函数,并且它的关键属性只是 getter 而不是 setter?

4

1 回答 1

2

这适用于标准命令以及 MVVM-Light 特定继电器命令。

需要可单元测试的逻辑应该在视图模型中作为方法实现,然后从命令中调用。

命令中剩下的应该是从 UI 中提取信息的逻辑,即将参数转换为适当的类型并传递它。

这样,作为一个实体的视图模型是可单元测试的,命令保持非常精简,每个人都开心=]。

注意如果你想对你的单元测试特别严格,转换应该发生在 ViewModel 的方法中,但通常只要它可以处理一个空参数,那么你就设置好了,这就是我变得懒惰的原因。

希望有帮助

于 2011-01-17T12:52:27.247 回答