gpt4 book ai didi

c# - 起订量有问题

转载 作者:行者123 更新时间:2023-12-03 04:19:13 26 4
gpt4 key购买 nike

我正在尝试最小起订量,但在以下测试主体中遇到了问题:

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

抛出:

System.ArgumentException: Invalid expectation on a non-overridable member: p => p.Children.Contains(value(ZooCms.Core.Tests.Model.ZooNodeTest+<>c__DisplayClass0).child.Object).

我不太确定它的最小起订量,但我正在测试的代码相当简单。我不确定这是否重要,但 ZooNode 是一个抽象类。

提前致谢。

编辑

这是 darin's response 建议修改后的代码:

public abstract class ZooNode : ZooObject
{
private ZooNode _parent{ get; set;}
public ZooNode Parent {
get
{
return _parent;
}
set
{
if(Parent != null)
Parent.Children.Remove(value);
_parent = value;
_parent.Children.Add(this);
}
}
public virtual IList<ZooNode> Children { get; private set; }

}

它现在抛出

Test method ZooCms.Core.Tests.Model.ZooNodeTest.TestSetParentAddsNodeToParentNodeList threw exception: System.NullReferenceException: Object reference not set to an instance of an object..

最佳答案

如果您想定义对其的期望,您的Children集合属性需要是虚拟的:

public abstract class ZooNode
{
public ZooNode Parent { get; set; }
public virtual IList<ZooNode> Children { get; set; }
}

关于c# - 起订量有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/455801/

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