如何在单元测试项目中获得appsettings?

时间:2018-03-04 02:35:38

标签: c# asp.net-core asp.net-core-2.0

我可以在类库中注入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类,但是如何将它注入单元测试项目中。在这种情况下我不想使用模拟。

0 个答案:

没有答案