首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对CanExecuteRoutedEventHandler进行单元测试?

如何对CanExecuteRoutedEventHandler进行单元测试?
EN

Stack Overflow用户
提问于 2011-09-14 16:18:17
回答 1查看 943关注 0票数 3

我正在尝试为以下代码编写单元测试:

代码语言:javascript
复制
public static void AppExitCmdCanExecute(object sender,
                                        CanExecuteRoutedEventArgs e)
{
    e.CanExecute = true;
}

这段代码的问题是我不能创建CanExecuteRoutedEventArgs类型的模拟实例(密封类)或实例(内部构造函数)。

我尝试了下面的方法,但是下面的代码都抛出了运行时异常。

代码语言:javascript
复制
[Test()]
public void AppExitCmdCanExecuteTest()
{
    object sender = null;
    //Type to mock must be an interface or an abstract or non-sealed class.
    var mockArgs = new Moq.Mock<CanExecuteRoutedEventArgs>();
    AppCommands.AppExitCmdCanExecute(sender, mockArgs.Object);
    Assert.IsTrue(mockArgs.CanExecute);
}

[Test()]
public void AppExitCmdCanExecuteTest()
{
    object sender = null;                
    //Constructor on type 'System.Windows.Input.CanExecuteRoutedEventArgs'
    // not found.
    var mockArgs = Activator.CreateInstance(typeof (CanExecuteRoutedEventArgs),
                                            BindingFlags.NonPublic | 
                                            BindingFlags.Instance,
                                            new object[2] {fakeCommand, 
                                                           fakeParameter});
    AppCommands.AppExitCmdCanExecute(sender, mockArgs);
    Assert.IsTrue(mockArgs.CanExecute);
}

感谢您的关注。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-14 16:46:23

你用的是the wrong overload of CreateInstance。使用以下命令:

代码语言:javascript
复制
Activator.CreateInstance(typeof (CanExecuteRoutedEventArgs),
                         BindingFlags.NonPublic | BindingFlags.Instance, null,
                         new object[2] {fakeCommand, fakeParameter}, null);

您需要确保fakeCommand不是null,因为构造函数对该参数有一个保护子句。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7413258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档