Я пробую 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 (значение (ZooCms.Core.Tests.Model.ZooNodeTest + <> c__DisplayClass0) .child.Object).
и я не совсем уверен, что это moq, но код, который я тестирую, довольно прост. Я не уверен, имеет ли это значение, но ZooNode - это абстрактный класс.
Заранее спасибо.
EDIT
Вот код после предложенного изменения из ответ Дарина :
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: объект
ссылка не установлена на экземпляр
объект ..