Mvvm DelegateCommand<;对象>;使用EventArg参数mstest进行测试

Mvvm DelegateCommand<;对象>;使用EventArg参数mstest进行测试,mvvm,mstest,rhino-mocks,routed-events,eventargs,Mvvm,Mstest,Rhino Mocks,Routed Events,Eventargs,我目前有一个触发自定义触发操作的事件触发器 该操作将EventArgs类型的对象传递回视图的视图模型 当我运行代码时,这一切都很好,它工作得非常好。然而,当我来测试这部分代码时,它就有点垃圾了 如上所述,我们使用的是MVVM类型的模式,因此我正在测试视图模型中事件触发器的“Doing”结尾,我想做的是创建一个“mocked”EventArgs对象,以传递到被测命令的execute方法中。但是,它需要RouteEvent,因为它的ID属性如上所述,我没有访问它的构造函数的权限 Cannot Acc

我目前有一个触发自定义触发操作的事件触发器

该操作将EventArgs类型的对象传递回视图的视图模型

当我运行代码时,这一切都很好,它工作得非常好。然而,当我来测试这部分代码时,它就有点垃圾了

如上所述,我们使用的是MVVM类型的模式,因此我正在测试视图模型中事件触发器的“Doing”结尾,我想做的是创建一个“mocked”EventArgs对象,以传递到被测命令的execute方法中。但是,它需要RouteEvent,因为它的ID属性如上所述,我没有访问它的构造函数的权限

Cannot Access Internal Constructor for 'RoutedEvent' here.

有人有什么想法吗?测试中的代码转换比当前的实现更重要,因此如果认为这是“不稳定的”,那么我可以进行更改

我想我已经回答了我自己的问题

这意味着我传递给被测试方法的对象更容易创建

这就是我现在对测试中的方法所做的

public void DoItemsChanged(IList param)
在我之前

public void DoItemsChanged(object param)

其中参数是SelectedItemCollection(以前是RoutedEventArgs,但现在我在视图中的事件触发器上使用IvokeCommandAction,传递SelectedItems)。参数现在更容易传递到测试的方法中,代码也更具描述性。因此,这对每个人都有好处。

您能添加一些示例代码来说明所有这些是如何连接起来的吗?它将有助于为您在测试中如何使用Rhino.Mocks提供上下文。我将Rhino Mocks作为标记放入其中,因为我目前正在使用它来隔离测试的一些目标类,因此如果需要,我可以。但如果我不需要,我不会。我将在上面添加一个编辑,其中包括一些代码。