我目前有一个事件触发器触发自定义触发器操作。
该操作将EventArgs类型的对象传递回视图的视图模型。
当我运行完美的代码时,这一切都很好。但是,当我来测试这部分代码时,一切都变得有点垃圾了。
如上所述我们正在使用MVVM类型模式,因此我在视图模型中测试事件触发器的“正在执行”结束,我想要做的是创建一个'mocked'EventArgs对象以传递给执行我正在测试的命令的方法。但是它需要一个RoutedEvent作为它的ID属性,如上所述,我无权访问它的构造函数!
Cannot Access Internal Constructor for 'RoutedEvent' here.
有没有人有任何想法?测试中的代码覆盖率比当前的实现更重要,因此如果认为这是“不可测试的”,那么我可以进行更改。
答案 0 :(得分:0)
我认为我回答了自己的问题。
Casting the object passed back from the view at an earlier point表示我更容易创建传递给测试方法的对象。
这就是我现在对被测方法的看法。
public void DoItemsChanged(IList param)
在我之前
public void DoItemsChanged(object param)
其中param是SelectedItemCollection(以前是RoutedEventArgs,但现在我在视图中的事件触发器上使用IvokeCommandAction,传递SelectedItems)。现在,param更容易传递到测试方法中,而且代码也更具描述性。所以对每个人都有好处。