【发布时间】:2020-02-08 19:53:55
【问题描述】:
我正在尝试为扩展方法编写一个测试,该方法为发送到 IConfiguration 的索引属性的键添加前缀:
扩展名:
public static class IConfigurationExt
{
public static string GetDomainValue(this IConfiguration configuration, string key)
{
return configuration["domain." + key];
}
}
测试:
[Test]
public void GetInexKeyAsCallback()
{
string keySet = null;
Mock<IConfiguration> configurationMock = new Mock<IConfiguration>(MockBehavior.Strict);
configurationMock.SetupGet(p => p[It.IsAny<string>()])
.Callback(() => keySet = "assign key here") // <<< the part here needs the parameter
.Returns("mock");
IConfiguration configuration = configurationMock.Object;
var result = configuration.GetDomainValue("testKey");
Assert.AreEqual(expected: "domain.testKey", actual: keySet);
}
我试图看到,当执行 getter 并发送密钥时,它将带有 IConfiguration 的索引属性的前缀。
我的问题是我无法使回调部分使用参数,例如:
以.Callback<string>((key) => keySet = key) 为例。
有没有办法获取发送到索引属性的键?
它适用于SetupSet,但不适用于SetupGet
谢谢!
【问题讨论】:
-
只是想知道为什么不用
Verify而不是Callback? -
@Johnny 这是一个很好的观察。
标签: c# indexing properties mocking moq