2016-05-21 19 views
7

統合テストでは、TestServerクラスを使用して、統合テスト用のテストサーバーインスタンスに取り組んでいます。 RC2でASP.NET Core RC2への移行後に統合テストが壊れた

var server = new TestServer(TestServer.CreateBuilder().UseStartup<Startup>()); 

は、TestServer.CreateBuilder()が削除されました:RC1では、私は次のコードを使用してインスタンス化。

var server = new TestServer(new WebHostBuilder().UseStartup<Startup>()); 

私が直面してる問題は、それが設定上の例外をスローするようRC2後、ランタイムは、DIの依存関係を解決することができませんということです。そのため、私は、次のコードを使用して新しいTESTSERVERを作成しようとしましたStartupクラスのメソッドです。ただし、実際のサーバー(テストプロジェクトではない)を起動すると、システムが起動します。

System.Exception : Could not resolve a service of type 'ShikashiBot.IShikashiBotManager' for the parameter 'botManager' of method 'Configure' on type 'ShikashiBot.Startup'. 

を私は現在、テストホスト用に次のパッケージを使用しています:Microsoft.AspNetCore.TestHost": "1.0.0-rc2-final

+0

DIコンテナの種類が不足しているようです。しかし、タイプはASP.NETから来ていません。おそらくそれはあなたのタイプの1つです。ShikashiBot.IShikashiBotManager' –

+0

@VictorHurdugaci私が私の元の投稿で言ったように、そうであれば、私は通常のように起動してもアプリケーションは起動しませんでした。移行中にDIコンテナに追加された項目にも変更はありませんでした。 – Martin

+0

'Startup'には含まれていない' Program.cs'には何もないのですか? –

答えて

7

私はあなたのレポを動作させるためにいくつかの変更を必要と:

  1. 私がスローされた例外は以下の通りですappsettings.sample.jsonからappsettings.jsonに名前を変更する必要がありましたが、これはソースコントロールにないからです。
  2. IntegrationTestsプロジェクトのproject.json"buildOptions": { "copyToOutput": [ "appsettings.json" ] }を追加する必要がありました。
  3. appsettings.jsonのログレベルをVerboseからDebugに変更していない。

しかし、この後、統合テストEndPointsRequiresAuthorizationは、依存性注入を通過し、私にとって、それは私がPostgre DBが設定されていないので、私は推測ShikashiBotManagerに例外で失敗。
IShikashiBotManagerインターフェイスを解決できないため、これ以前に既に失敗していますか? 、再構築し、再試行してください:

あなたはgit clean -xfd(あなたのコミットではないローカルな変更が削除されますNOTE)とローカルリポジトリの完全なパージを実行しようとすることはできますか?

+0

欠けている設定(手順2)が私の問題の主な原因だと思われます。私はまだそれが不思議な設定ファイルがIShikashiBotManagedが解決されない原因になることがわかります。乾杯! – Martin

+0

.netコアタイプの解像度は実際には非常に奇妙なプロセスであるようです。 project.jsonの内部動作の謎は、しばらくの間不明瞭なままであるかもしれません。 –

関連する問題