无法访问模拟的基础对象

时间:2018-03-01 13:48:28

标签: c# wpf moq

我在使用Moq的单元测试中有以下代码:

Mock<BorderedCanvas> canvas2 = new Mock<BorderedCanvas>();
canvas2.Object.Children.Add(canvas1);
canvas1.RaiseEvent(someEvent);
canvas2.Verify(c => c.RaiseEvent(It.IsAny<RoutedEventArgs>()), Times.Once);

第二行的代码失败,显示以下消息:

System.NullReferenceException : Object reference not set to an instance of an object.

知道为什么我无法访问模拟canvas2的基础对象吗?

1 个答案:

答案 0 :(得分:1)

关于模拟对象的所有内容都将返回默认值,除非您已将其告知其行为。由于您尚未告诉Children属性应如何表现,因此它返回该类型的默认值,即null。因此,当您尝试在空对象上调用“添加”时,NullReferenceException。 (哇,多次评论殴打它,上面......)