【问题标题】:How can I unit test RelayCommand<DragEventArgs> DropFile?如何对 RelayCommand<DragEventArgs> DropFile 进行单元测试?
【发布时间】:2011-01-14 11:18:02
【问题描述】:

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

【问题讨论】:

    标签: unit-testing mvvm-light relaycommand


    【解决方案1】:

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

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

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

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

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

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 2019-01-05
      相关资源
      最近更新 更多