C# 与最低起订量有问题
我正在尝试moq,但我遇到了以下测试机构的问题:C# 与最低起订量有问题,c#,unit-testing,moq,C#,Unit Testing,Moq,我正在尝试moq,但我遇到了以下测试机构的问题: var child = new Mock<ZooNode>(); var parent = new Mock<ZooNode>(); child.Object.Parent = parent.Object; parent.Expect(p => p.Children.Contains(child.Object)).Returns(true); var child=new Mock(); var parent=new
var child = new Mock<ZooNode>();
var parent = new Mock<ZooNode>();
child.Object.Parent = parent.Object;
parent.Expect(p => p.Children.Contains(child.Object)).Returns(true);
var child=new Mock();
var parent=new Mock();
child.Object.Parent=Parent.Object;
Expect(p=>p.Children.Contains(child.Object)).Returns(true);
它抛出:
System.ArgumentException:无效
对不可重写对象的期望
成员:p=>
p、 包含(值(ZooCms.Core.Tests.Model.ZooNodeTest+c\uu DisplayClass0).child.Object)
我不确定它是否是moq,但是我正在测试的代码相当简单。我不确定这是否重要,但ZooNode是一个抽象类
提前谢谢
编辑
以下是建议修订后的代码:
公共抽象类ZooNode:ZooObject
{
私有ZooNode _parent{get;set;}
公共节点父节点{
得到
{
返回父母;
}
设置
{
如果(父项!=null)
Parent.Children.Remove(值);
_父=值;
_parent.Children.Add(此);
}
}
公共虚拟IList子项{get;private set;}
}
它现在抛出
试验方法
ZooCms.Core.Tests.Model.ZooNodeTest.TestSetParentAddsNodeToParentNodeList
引发异常:
System.NullReferenceException:对象
引用未设置为的实例
对象
如果要定义对其的期望值,则子集合属性需要是虚拟的:
public abstract class ZooNode
{
public ZooNode Parent { get; set; }
public virtual IList<ZooNode> Children { get; set; }
}
公共抽象类ZooNode
{
公共ZooNode父节点{get;set;}
公共虚拟IList子项{get;set;}
}
机会,
您从未实际初始化子集合。所以,要么您需要在构造函数中初始化它,要么您可以告诉Moq在默认情况下模拟它
var parent = new Mock<ZooNode>() { DefaultValue = DefaultValue.Mock };
var parent=new Mock(){DefaultValue=DefaultValue.Mock};
当我尝试这样做时,会出现以下异常:测试方法ZooCms.Core.Tests.Model.ZooNodeTest.TestSetParentAddsNodeToParentNodeList引发异常:System.NullReferenceException:Object reference未设置为对象的实例..啊-算出了,它使用的任何对象都需要是虚拟的。。谢谢你,伙计
var parent = new Mock<ZooNode>() { DefaultValue = DefaultValue.Mock };