gpt4 book ai didi

c# - 如何模拟 IConfiguration.GetValue

转载 作者:行者123 更新时间:2023-12-04 11:03:24 30 4
gpt4 key购买 nike

我试图模拟顶级(不是任何部分的一部分)配置值(.NET Core 的 IConfiguration),但徒劳无功。例如,这些都不起作用(使用 NSubstitute,但它与 Moq 或我相信的任何模拟包相同):

var config = Substitute.For<IConfiguration>();
config.GetValue<string>(Arg.Any<string>()).Returns("TopLevelValue");
config.GetValue<string>("TopLevelKey").Should().Be("TopLevelValue"); // nope
// non generic overload
config.GetValue(typeof(string), Arg.Any<string>()).Returns("TopLevelValue");
config.GetValue(typeof(string), "TopLevelKey").Should().Be("TopLevelValue"); // nope
就我而言,我还需要调用 GetSection来自同一个配置实例。

最佳答案

您可以使用具有内存数据的实际 Configuration 实例。

//Arrange
var inMemorySettings = new Dictionary<string, string> {
{"TopLevelKey", "TopLevelValue"},
{"SectionName:SomeKey", "SectionValue"},
//...populate as needed for the test
};

IConfiguration configuration = new ConfigurationBuilder()
.AddInMemoryCollection(inMemorySettings)
.Build();


//...
现在是根据需要使用配置来进行测试的问题
//...

string value = configuration.GetValue<string>("TopLevelKey");

string sectionValue = configuration.GetSection("SectionName").GetValue<string>("SomeKey");

//...
引用: Memory Configuration Provider

关于c# - 如何模拟 IConfiguration.GetValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64794219/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com