私は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);
これはスローします:
System.ArgumentException: オーバーライドできないメンバーに対する無効な期待: p => p.Children.Contains(value(ZooCms.Core.Tests.Model.ZooNodeTest+<>c__DisplayClass0).child.Object)。
moqかどうかはよくわかりませんが、テストしているコードはかなり単純です。それが問題かどうかはわかりませんが、ZooNode は抽象クラスです。
前もって感謝します。
編集
ダリンの応答から提案された改訂後のコードを次に示します。
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; }
}
それは今スローします
テスト メソッド ZooCms.Core.Tests.Model.ZooNodeTest.TestSetParentAddsNodeToParentNodeList が例外をスローしました: System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません..