我可以在类库中注入appsettings。我有一个代理项目,我用来注入appsettings然后我可以在任何地方注入代理类。但是,我无法弄清楚如何在单元测试项目中注入我的代理类。
的AppSettings
"ConnectionStrings": {
"DefaultConnection": "Server=localhost\\SQLEXPRESS;Database=db;Trusted_Connection=True;"
}
启动课程
public void ConfigureServices(IServiceCollection services)
{
services
.Configure<EnvironmentSettings.EnvironmentSettings>(Configuration)
.AddSingleton(sp => sp.GetRequiredService<IOptions<EnvironmentSettings.EnvironmentSettings>>().Value);
services.AddScoped<Data.ISqlDataController, Data.SqlDataController>();
services.AddMvc();
}
EnvironmentSettings类(代理)
这个类在另一个类库项目中
public class EnvironmentSettings : IEnvironmentSettings
{
public ConnectionStrings ConnectionStrings { get; set; }
}
以下是使用EnvironmentSettings
的代码public class SqlDataController : ISqlDataController
{
private EnvironmentSettings.EnvironmentSettings environmentSettings;
public SqlDataController(EnvironmentSettings.EnvironmentSettings environmentSettings)
{
this.environmentSettings = environmentSettings;
}
public string Test()
{
return environmentSettings.ConnectionStrings.DefaultConnection;
}
}
如您所见,我可以将EnvironmentSettings注入SqlDataController。 EnvironmentSettings在Startup类中绑定。
所以我可以在其他类和类库中成功注入environmentsettings类,但是如何将它注入单元测试项目中。在这种情况下我不想使用模拟。