11

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

この関数をmoqするにはどうすればよいですか。

4

2 に答える 2

14

インターフェイスはCOMオブジェクトでget関数があったので、インデクサーで直接プロパティにアクセスする代わりにget関数を使って、

mock.Setup(f => f.get_Items(itemName)).Returns(expected); 
于 2012-07-17T11:23:34.987 に答える