9
我正在使用Moq编写单元测试。我创建了一个模拟对象。现在,当我尝试模拟其属性,我得到错误“表达式树可能不包含索引属性”模仿索引属性
这里是我的代码。
public Node GetNode(IMyInterface interface, string itemName)
{
return interface.Items[itemName];
}
这里是单元测试
var expected = new Node();
var itemName = "TestName";
var mock = new Mock<IMyInterface>();
mock.Setup(f => f.Items[itemName]).Returns(expected);
var target = new MyClass();
var actual = target.GetNode(mock.Object, itemName);
Assert.AreEqual(expected, actual);
此行是给我的错误。
mock.Setup(f => f.Items[itemName]).Returns(expected);
我该怎么办这个功能。
这不是一个问题,起订量直接访问属性。表达式树不能包含索引属性,因为错误状态。您应该重构代码以访问列表中的项目,而不是使用索引。 – 2012-07-17 10:12:50
我无法更改“interface.Items [itemName];”因为我通过COM获得它,任何方式在测试中做到这一点, – 2012-07-17 10:15:58
什么是项目?你能提供完整的接口定义吗? – 2012-07-17 10:17:11