2016-10-21 9 views
0

私はAsp Net Coreで作成されたWebアプリケーションを使用しており、統合テストにTestServerを使用しようとしています。Asp Net Core統合テスト中のWebHostBuilderの異常動作

私は テスト環境を設定するためにこれに続いてblog postでした。私がいるかどうかを確認する簡単なテストを実行する場合は、私が作成WebHostBuilder

var builder = new WebHostBuilder() 
    .UseContentRoot(appRootPath) 
    .UseStartup<TStartup>() 
    .UseEnvironment("test") 
    .ConfigureServices(x => 
    { 
     .AddWebEncoders(); 
    }); 

ために、このコードを使用する統合テストのために

public class Startup 
{ 
    public Startup(IHostingEnvironment env) 
    { 
     applicationPath = env.WebRootPath; 
     contentRootPath = env.ContentRootPath; 
     // Setup configuration sources. 

     var builder = new ConfigurationBuilder() 
      .SetBasePath(contentRootPath) 
      .AddJsonFile("appsettings.json") 
     builder.AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 

    public void ConfigureServices(IServiceCollection services) 
    { 
     // Many services are called here 
     services.AddMvc(); 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime appLifetime) 
    { 
     // Many config are made here 
     loggerFactory.AddSerilog(); 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=auth}/{action=login}/{id?}"); 
     }); 
    } 
} 

アプリケーションのStartup.csは次のようになりますホームページはアクセス可能です。

いくつかのレイソンについては、スタートアップでいくつかの設定を変更する必要があります。私は前のように同じ簡単なテストをデバッグするとき、私は、(私はあなたの助けを必要とする理由です)なぜ ConfigureServicesと設定方法を知らない、

var builder = new WebHostBuilder() 
.UseContentRoot(appRootPath) 
.UseStartup<TStartup>() 
.UseEnvironment("test") 
.ConfigureServices(x => 
{ 
    .AddWebEncoders(); 
}) 
.Configure(x => { 
// Some specific configuration 
}); 

そして:だから私はWebHostBuilder上の設定で呼び出しを追加します起動クラスの... 私はちょうどConfigureメソッドを空白にしても。

この動作は正常ですか?

Startup.csに直接追加せずに特定の設定をセットアップするにはどうすればよいですか?

答えて

1

WebHostBuilder.Configureは、UseStartupの代わりに使用することはできません。代わりにIStartupFilterConfigureServicesの中に登録することができます。 Look hereをご覧ください。

+0

私はIStartupFilterをこのコード[ASPNETソースコードから] [1]のように使用します。 [1]:https://github.com/aspnet/Hosting/blob/master/src/Microsoft.AspNetCore.Hosting/Internal/AutoRequestServicesStartupFilter.cs – Waldo

関連する問題