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"];