3

我有下一个界面

    public interface IMyInterface
{
    string this[string key] { get; set; }
}

我想在我的测试中实现get/set

var _Nvp = //...
var mockMyInterface = new Mock<IMyInterface>();
        mockMyInterface
            .Setup(e => e[It.IsAny<string>()])
            .Returns((string key) => _Nvp[key]);

        mockMyInterface
            .SetupSet(c => c[It.IsAny<string>()] = It.IsAny<string>())
            .Callback((string key, string value) => { _Nvp[key] = value; }));

但它不起作用..没有错误,没有消息..

        var oj = mockMyInterface.Object;
        oj["key"] = "value";
        var value = oj["key"];

变量值始终为空。

4

1 回答 1

4

查看以下SO 评论

c[It.IsAny<string>()]起订量在 SetupSet 上的解析似乎存在限制。指定特定键时,它似乎可以工作。

在您的情况下,您可能希望使用内部状态实现您的接口而不是模拟的存根。

于 2012-06-17T14:36:05.320 回答