gpt4 book ai didi

c# - 单元测试中的 HostBuilder : HostContext. Configuration.GetSection 返回值 null

转载 作者:行者123 更新时间:2023-12-04 17:27:39 25 4
gpt4 key购买 nike

我正在尝试使用 HostBuilderMsTest 中上课测试用例如下:

        [TestMethod]
public void SomeTest()
{
var builder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: true);
})
.ConfigureServices((hostContext, services) =>
{
var section = hostContext.Configuration.GetSection("AppConfig");
Assert.IsNotNull(section.Value, "Appconfig sections was not loaded");
});
var host = builder.Build();
}

所以我有一个 appsettings.json添加到 config 的文件对象。

问题:调用hostContext.Configuration.GetSection("AppConfig")section.Valuenull (Assert 已启动)。如果我调试代码,我可以看到 hostContext.Configuration有一个 JsonConfigurationProvider它解析了 appsettings.json 中定义的适当值.

环境:netcoreapp3.1

Update1:​​我已将源代码上传至Github .

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

不确定你是否能够解决这个问题,但我也遇到了类似的问题!我是如何解决这个问题的,因为在检查 appsettings.json 属性时,似乎该文件的默认操作是从不。因此,当项目在目标文件夹中构建时,appsettings.json 文件从未被复制过。将此设置更改为“始终复制”或“如果更新则复制”解决了它,现在我在目标执行文件夹中获得了更新的 json 文件。

你上面的代码似乎没问题——我的非常相似。

要测试这是否确实是您遇到的问题,请更改

config.AddJsonFile("appsettings.json", optional: true);

config.AddJsonFile("appsettings.json", optional: false);

如果文件不存在,这将强制应用程序失败。这也是我在令人尴尬的长时间后发现问题的方式。

要检查此文件的属性,请在解决方案资源管理器中右键单击它并选择属性。在默认的 VS 2019 中,属性面板位于解决方案资源管理器的正下方。

关于c# - 单元测试中的 HostBuilder : HostContext. Configuration.GetSection 返回值 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62284818/

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