惩戒索引属性 [英] Mocking indexed property

查看:115
本文介绍了惩戒索引属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写起订量使用单元测试。我创建了一个模拟对象。现在,当我尝试嘲笑其财产我得到错误表达式树不能包含索引属性

I am writing unit tests using Moq. I have created a mock object. Now when i try to mock its property i am getting error "An expression tree may not contain an indexed property"

下面是我的代码。

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



我怎样才能MOQ此功能。

How can i moq this function.

推荐答案

接口是一个COM对象,并有得到的功能,所以不是使用索引使用获取函数直接访问属性,

Interface was a COM object and there were get function, so instead of directly accessing property using indexer use get function,

mock.Setup(f => f.get_Items(itemName)).Returns(expected); 

这篇关于惩戒索引属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆