我有一个这样的类:
public class Test : ITest
{
public Test(IOptions<CustomSection> settings)
{
//do something
}
}
我想对依赖项注入进行单元测试并进行维护。因此,为了实现这一点,我尝试了以下方法:
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.AddEnvironmentVariables();
var configurationRoot = builder.Build();
//This is a method that injects various services.
var services = InjectServices();
services.AddSingleton<IConfiguration>(configurationRoot);
var provider = services.BuildServiceProvider();
var my service = provider.GetService<ITest>();
然而,我得到以下错误:
无法解析类型为"Microsoft"的服务。扩展。选项。尝试激活"测试"时的选项"1[Test]"。
如何将IOptions添加到注入?我以为services.AddSingleton<IConfiguration>(configurationRoot);
会起作用,但似乎没有。此外,我的配置是正确的,如果我在主项目中使用相同的appsettings,就没有问题。
您忘记注册使用选项所需的服务:
// extension method defined in Microsoft.Extensions.Options
services.AddOptions();
此外,您应该通过以下方式设置如何从配置构建CustomSection
:
services.Configure<CustomSection>(configurationRoot);
ASP。NET核心
ASP中的参考选项模式。NET核心