如何对 RelayCommand进行单元测试删除文件?

发布于 2024-10-11 21:04:37 字数 592 浏览 3 评论 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?

I'm trying out MVVM Light, partly inspired by the EventToCommand capabilities which seem to make it easier to handle drag-and-drop from outside my app in the View Model and in the XAML. However I am a confused by how to unit test the RelayCommand. My RelayCommand is declared simply

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

and then the functionality is assigned within the ViewModel constructor, not inline but using a method on the ViewModel

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

When I'm writing a unit test for the DropFile RelayCommand I cannot see what to call? Should I be calling

testTarget.DropFile.Execute(params)

and how does one construct the params since DragEventArgs has only an empty constructor, and its key properties are just getters not setters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七禾 2024-10-18 21:04:37

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

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

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

这样,视图模型作为一个实体就可以进行单元测试,命令保持非常精简,每个人都很高兴=]。

注意:如果您想对单元测试特别严格,则转换应该在 ViewModel 的方法中进行,但通常只要它可以处理 null 参数,那么您就可以完成所有设置,这就是我变得懒惰的原因。

希望有帮助

This is true for standard commands as well as the MVVM-Light specific relay commands.

logic that needs to be unit testable should be implemented in the viewmodel as a method and then called from the command.

whats left in the command should be logic to extract information from the UI, i.e. converting the parameter to the appropriate type and passing it on.

This way the viewmodel as an entity is unit testable, the commands are kept very thin, everyones happy =].

N.B. If you want to be particularly strict with your unit testing, the conversion should happen in the Method of the ViewModel, but typically so long as it can handle a null parameter then your all set which is why I grow lazy.

Hope that helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文