2016-06-01 6 views
4

私は.NET Coreプロジェクトの自動統合テストを構築しています。どうにか私は統合テストのデータベースの接続文字列にアクセスする必要があります。新しい.netコアにはConfigurationManagerがなくなり、代わりに設定が注入されますが、接続文字列をテストクラスに注入する方法はありません。.NETコア統合テストでMy ConnectionStringを見つける

.NETコアには、テストクラスに何かを注入することなく設定ファイルを取得する方法はありますか?あるいは、テストクラスに依存関係を注入する方法がありますか?

+0

もっと具体的になりますか? Core 1.0の設定ヘルプについては、[here](https://docs.asp.net/en/latest/fundamentals/configuration.html)を参照してください。 –

+0

私は明確ではないか分からない。基本的には、ファイルから設定が必要なクラスがあります。クラスは、私が制御しないフレームワーク(テストランナー)へのプラグインとして実行されています。私はフレームワークを制御しないので、設定ファイルへのアクセスを得るために私のクラスにIOを注入することはできません。テストクラスで構成データを取得するにはどうすればよいですか? –

+0

[this](http://dotnetliberty.com/index.php/2016/02/22/moq-on-net-core)のようなもの? –

答えて

1

.NETコア2.0

新しい構成を作成し、appsettings.jsonの正しいパスを指定します。

これはすべて私のテストで継承した私のTestBase.csの一部です。

public abstract class TestBase 
{ 
    protected readonly DateTime UtcNow; 
    protected readonly ObjectMother ObjectMother; 
    protected readonly HttpClient RestClient; 

    protected TestBase() 
    { 
     IConfigurationRoot configuration = new ConfigurationBuilder() 
      .SetBasePath(AppContext.BaseDirectory) 
      .AddJsonFile("appsettings.json") 
      .Build(); 

     var connectionStringsAppSettings = new ConnectionStringsAppSettings(); 
     configuration.GetSection("ConnectionStrings").Bind(connectionStringsAppSettings); 

     //You can now access your appsettings with connectionStringsAppSettings.MYKEY 

     UtcNow = DateTime.UtcNow; 
     ObjectMother = new ObjectMother(UtcNow, connectionStringsAppSettings); 
     WebHostBuilder webHostBuilder = new WebHostBuilder(); 
     webHostBuilder.ConfigureServices(s => s.AddSingleton<IStartupConfigurationService, TestStartupConfigurationService>()); 
     webHostBuilder.UseStartup<Startup>(); 
     TestServer testServer = new TestServer(webHostBuilder); 
     RestClient = testServer.CreateClient(); 
    } 
}