gpt4 book ai didi

c# - 如何对 CanExecute RoutedEventHandler 进行单元测试?

转载 作者:行者123 更新时间:2023-11-30 22:35:31 25 4
gpt4 key购买 nike

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

public static void AppExitCmdCanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}

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

我尝试了以下,但以下代码都抛出运行时异常。

[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);
}

感谢您的关注。

最佳答案

您使用了 the wrong overload of CreateInstance .使用这个:

Activator.CreateInstance(typeof (CanExecuteRoutedEventArgs),
BindingFlags.NonPublic | BindingFlags.Instance, null,
new object[2] {fakeCommand, fakeParameter}, null);

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

关于c# - 如何对 CanExecute RoutedEventHandler 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7413258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com