2016-05-21 10 views
7

Podczas testów integracji używam klasy TestServer do pracy w instancji serwera testowego dla moich testów integracji. W RC1, ja instanciated go za pomocą następującego kodu:Testy integracyjne zepsute po migracji do środowiska ASP.NET Core RC2

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

Na RC2, TestServer.CreateBuilder() została usunięta. Dlatego starałem się stworzyć nową TestServer stosując następujący kod:

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

Problem jestem stoi to, że po RC2, środowisko wykonawcze nie jest w stanie rozwiązać problemów z zależnościami dla DI, tak, że rzuca wyjątki na Configure metoda dla klasy Początek. System uruchamia się jednak, jeśli uruchomię właściwy serwer (nie projekt testowy). Wyjątek rzucony jest w następujący sposób:

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

obecnie używam następujący pakiet dla hosta testu: Microsoft.AspNetCore.TestHost": "1.0.0-rc2-final

+0

Wygląda na to, że brakuje niektórych typów z pojemnika DI. Ale typ nie pochodzi z ASP.NET. Prawdopodobnie jest to jeden z twoich typów 'ShikashiBot.IShikashiBotManager' –

+0

@VictorHurdugaci, tak jak powiedziałem w moim oryginalnym wpisie, jeśli tak było, moja aplikacja nie wystartowałaby, gdybym zaczął normalnie. Nie wprowadzono również zmian w elementach dodanych do kontenera DI podczas migracji. – Martin

+0

Czy na pewno nie ma czegoś w 'Program.cs', którego nie ma w' Uruchomieniu'? –

Odpowiedz

7

mi potrzebne pewne zmiany, aby uzyskać repo do pracy:

  1. I musiałem zmienić nazwę na appsettings.sample.json na appsettings.json, myślę, że dzieje się tak tylko dlatego, że nie ma kontroli nad źródłem.
  2. Musiałem dodać "buildOptions": { "copyToOutput": [ "appsettings.json" ] } do project.json projektu IntegrationTests.
  3. Musiał zmienić poziom dziennika Verbose na Debug w swoim appsettings.json.

Ale po tym test integracja EndPointsRequiresAuthorization przechodzi wstrzykiwania zależności, a dla mnie to nie powiedzie się z wyjątkiem w ShikashiBotManager, myślę, bo nie mają Postgre DB skonfigurować.
Dla ciebie już to zawodzi, ponieważ nie może rozwiązać interfejsu IShikashiBotManager, prawda?

można spróbować zrobić kompletny czystkę lokalnego repozytorium z git clean -xfd (UWAGA: twoje nie popełnione lokalne zmiany zostaną usunięte), przebudowa i spróbować jeszcze raz?

+0

Wygląda na to, że brakująca konfiguracja (krok 2) była główną przyczyną mojego problemu. Ciągle jednak wydaje mi się to dziwne, że brakujący plik konfiguracyjny powoduje, że IShikashiBotManaged pozostaje nierozwiązany. Twoje zdrowie! – Martin

+0

Rozdzielczość typów rdzeni .net wydaje się być bardzo dziwnym procesem. Tajemnice wewnętrznych działań project.json mogą przez jakiś czas pozostać niejasne. –

Powiązane problemy