私はこの問題で何時間も苦労しています。私のWebAPIアプリケーションは、ローカルマシンとプロダクションサーバーで正常に動作しますが、依存関係注入機能を備えたコントローラの統合テストでは失敗します。すべては非常にきれいに見えます、そして、私はこれがなぜ機能していないのか分かりません。だからここDependancy InjectionがASPNETCore.TestHostで動作しない
モジュールを来る: コントローラ:
public SurveyController(IBoatInspectorRepository<Survey> repository)
{
_repository = repository;
}
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] {"value1", "value2"};
}
起動:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IBoatInspectorRepository<Survey>, BoatInspectorRepository<Survey>>();
}
テスト:
[Test]
public async Task GetSurveyDb_NullReturn_ReturnNotFound()
{
using (var testServer = CreateTestServer())
{
var client = testServer.CreateClient();
var value = await client.GetAsync("/api/survey/");
}
}
private TestServer CreateTestServer()
{
var builder = new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureServices(services =>
services.AddScoped<IBoatInspectorRepository<Survey>, BoatInspectorRepository<Survey>>());
return new TestServer(builder);
}
私はこれをデバッグする場合、デバッガは」doesnのコントローラのコンストラクタに入ることさえありません。私がコンストラクタをコメントアウトして空のものを作成すると、すべてが正常に動作するので、依存関係注入とは100%何かが行われます。助けてください。ありがとうございました。 1
UPDATEは、だから、私は、コンストラクタ次の操作を行う場合はいずれかの初期化されていないので、それは、コンテキストの初期化に問題があるようです。
public SurveyController(BoatInspectorContext context)
{
//debuger doesn't go inside here so must be something with context
}