Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法实现设置器(Moq)_C#_Unit Testing_Moq_Getter Setter - Fatal编程技术网

C# 无法实现设置器(Moq)

C# 无法实现设置器(Moq),c#,unit-testing,moq,getter-setter,C#,Unit Testing,Moq,Getter Setter,我有下一个接口 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>

我有下一个接口

    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; }));
变量值始终为空。

请检查以下内容

似乎在设置集的Moq端解析
c[It.IsAny()]
上存在限制。当指定了特定的键时,它似乎可以工作


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

什么是Nvp?字典?您是否已调试以查看是否正在调用setter回调(即设置了_Nvp[“key”]?您是否尝试了
SetupGet
而不是
Setup
?是的,dictionary.getter-已调用,但未调用setter.UrbanEsc,setter出现问题。\u Nvp也是空的。
        var oj = mockMyInterface.Object;
        oj["key"] = "value";
        var value = oj["key"];