Mocking indexed property

Viewed 1795

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"

here is my code.

public Node GetNode(IMyInterface interface, string itemName)
{
    return interface.Items[itemName];
}

Here is the unit test

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

This line is giving me error.

mock.Setup(f => f.Items[itemName]).Returns(expected);

How can i moq this function.

2 Answers

Using Moq in ASP.NET Core 2.2, the get_Items setup does not work. But this does:

Mock<IConfiguration> configuration = new Mock<IConfiguration>();
configuration.Setup(x => x[key]).Returns(value);
Related