【发布时间】:2021-07-30 12:45:45
【问题描述】:
Microsoft.Azure.Functions.Extensions 包的当前版本公开了一个附加属性,可让您轻松访问提供给函数的IConfiguration。以前这需要手动构建服务提供者,这显然是有问题的。
使用那个包我的FunctionsStartup.cs 看起来像这样:
public override void Configure(IFunctionsHostBuilder builder)
{
base.Configure(builder);
var config = builder.GetContext().Configuration; // new in v1.1.0 of Microsoft.Azure.Functions.Extensions
var mySetting = config["MySetting"];
int.Parse(mySetting, out var mySetting);
// ... use mySetting...
}
为了测试我的 HTTP 触发函数,我使用 this article 作为基础,它详细说明了如何手动构建和启动主机以执行我的函数,就像它在 Azure 中运行一样,类似于 @987654327 @ 在 ASP.NET Core 中工作:
var host = new HostBuilder()
.ConfigureWebJobs(new FunctionsStartup().Configure)
.Build();
var functionsInstance = ActivatorUtilities.CreateInstance<MyFunctions>(host.Services);
然后我可以执行MyFunctions 上定义的函数方法来测试它们的响应:
var request = new DefaultHttpRequest(new DefaultHttpContext());
var response = (OkObjectResult)functionsInstance.HttpTriggerMethod(request);
... assert that response is valid
问题是当我运行我的测试时,builder.GetContext().Configuration 在FunctionsStartup.Configure 中返回null,这当然会导致这些测试失败。我该如何解决这个问题?
【问题讨论】:
标签: c# azure azure-functions