2016-05-21 82 views
7

在我的集成測試中,我使用TestServer類來處理集成測試的測試服務器實例。在RC1,我實例化它使用下面的代碼:集成測試在遷移到ASP.NET Core後出現故障核心RC2

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

在RC2,TestServer.CreateBuilder(液)移出。因此,我嘗試使用下面的代碼來創建一個新的TESTSERVER:

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

我現在面臨的問題是,RC2後,運行時無法解析爲DI依賴關係,因此它拋出的異常配置啓動類的方法。但是,如果啓動實際服務器(不是測試項目),系統會啓動。拋出的異常是如下:

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。可能它是你的類型之一'ShikashiBot.IShikashiBotManager' –

+0

@VictorHurdugaci正如我在我原來的帖子中所說的,如果是這樣的話,我的應用程序就不會像平常那樣開始了。在遷移過程中添加到DI容器的項目也沒有發生變化。 – Martin

+0

你確定沒有'Program.cs'中沒有包含在'Startup'中的東西嗎? –

回答

7

我需要一些改變,讓您的回購工作:

  1. 我必須將appsettings.sample.json重命名爲appsettings.json,我想這只是因爲它不在源代碼控制中。
  2. 我必須將"buildOptions": { "copyToOutput": [ "appsettings.json" ] }添加到IntegrationTests項目的project.json
  3. 必須在您的appsettings.json中將日誌級別Verbose更改爲Debug

但畢竟這集成測試EndPointsRequiresAuthorization經歷了依賴注入,對我來說失敗,並在ShikashiBotManager,我猜是因爲我沒有Postgre DB設置不例外。
對於您來說,在此之前它已經失敗,因爲它無法解析IShikashiBotManager接口,對不對?

你可以試着用git clean -xfd注意:你未提交的本地更改將被刪除)做一個完整的清理本地存儲庫,重建並重試?

+0

似乎缺少配置(步驟2)是我的問題的主要原因。我仍然覺得奇怪,儘管缺少配置文件會導致IShikashiBotManaged無法解析。乾杯! – Martin

+0

.net核心類型的解析確實是一個非常奇怪的過程。 project.json內部工作的奧祕可能會在一段時間內保持晦澀難懂。 –

相關問題