我如何单元测试RelayCommand <drageventargs> DropFile?</drageventargs>

时间:2011-01-14 11:18:02

标签: unit-testing mvvm-light relaycommand

我正在尝试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)

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

1 个答案:

答案 0 :(得分:2)

对于标准命令以及MVVM-Light特定的中继命令都是如此。

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

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

这样,作为实体的视图模型是可单元测试的,命令保持非常薄,每个人都高兴=]。

N.B。如果你想对你的单元测试特别严格,那么转换应该在ViewModel的方法中进行,但通常只要它可以处理一个null参数然后你的所有集合,这就是我变得懒惰的原因。

希望有所帮助