動作しません。コントローラは問題ありません。しかし、実生活では、テストはもう少し複雑で、サービスやカスタムテストの設定を追加する必要があります。私は私の元のプロジェクトのスタートアップクラスから継承してTestStartupを作成し、これを行うためには.NETのコアRC2非自明な統合テストは
:あなたは今、私は私を使用するためにビルダーを変更、基本クラスへの唯一の代表者にそれを見ることができるように
public class TestStartup : Startup
{
public TestStartup(IHostingEnvironment env) : base(env)
{
}
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
}
public override void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
base.Configure(app, env, loggerFactory);
}
}
TestStartupコード:
protected BaseResourceTests(string resourceVersion)
{
var hostBulider = new WebHostBuilder()
.UseStartup<TestStartup>();
_server = new TestServer(hostBulider);
HttpClient = _server.CreateClient();
HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(resourceVersion));
HttpClient.BaseAddress = new Uri("http://localhost:5000");
}
これで、Http NotFound例外でテストが失敗するようになりました。デバッグすると、コントローラ内のアクションがテストコードにヒットしなくなったことがわかります。
私の推測では、スタートアップファイルがコントローラと異なるコントローラであれば、何とかmvcがルートを検出しないと思いますが、どうすればこの問題を回避できますか?
'_server = new TestServer(hostBulider);'に変更してください。 _server = TestServer.CreateBuilder()。UseStartup(); –
Set
TestServerクラスに静的メソッドCreateBuilderはありません。私は以前はrc1にあったと思います – Calin