我在使用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
的基础对象吗?
答案 0 :(得分:1)
关于模拟对象的所有内容都将返回默认值,除非您已将其告知其行为。由于您尚未告诉Children属性应如何表现,因此它返回该类型的默认值,即null。因此,当您尝试在空对象上调用“添加”时,NullReferenceException。 (哇,多次评论殴打它,上面......)