【问题标题】:DelegateCommand<object> test with EventArg parameter mstest使用 EventArg 参数 mstest 进行 DelegateCommand<object> 测试
【发布时间】:2011-09-24 05:14:50
【问题描述】:

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

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

当我运行它完美运行的代码时,这一切都很好。然而,当我来测试这部分代码时,一切都变得有点垃圾。

如前所述,我们正在使用 MVVM 类型模式,因此我正在我的视图模型中测试事件触发器的“正在执行”结束,我想要做的是创建一个“模拟”EventArgs 对象以传递给执行我正在测试的命令的方法。但是它需要一个 RoutedEvent,因为它是如上所述的 ID 属性,我无权访问它的构造函数!

Cannot Access Internal Constructor for 'RoutedEvent' here.

有人有什么想法吗?测试中的代码融合比当前的实现更重要,所以如果这被认为是“不可测试的”,那么我可以进行更改。

【问题讨论】:

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

标签: mvvm mstest rhino-mocks routed-events eventargs


【解决方案1】:

我认为我已经回答了我自己的问题。

Casting the object passed back from the view at an earlier point 表示我传递给被测方法的对象更容易创建。

这就是我现在所测试的方法。

public void DoItemsChanged(IList param)

之前

public void DoItemsChanged(object param)

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

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多