2016-12-30 12 views
12

Mam usługę reszta .NET core MVC. Mam kontroler, który chcę przetestować. Ten kontroler ma argument konstruktora IOptions, gdzie AppSettings jest moją klasą dla ustawień konfiguracyjnych (przechowuję w niej ciąg połączenia z bazą danych). Zostanie on wstrzyknięty z konfiguracji w ConfigureServices w Startup.csJak zainicjować IOption <AppSettings> dla urządzenia testującego usługę MVC .NET core?

Reszta usługi działa. Mój problem polega na tym, że przygotowałem projekt testowy MSTest do przetestowania usługi. Nie mogę dowiedzieć się, jak zainicjować instancję IOptions, aby spełnić wymagania konstruktora kontrolera.

+0

Możecie zajrzeć do ram kpiącym jak NSubstitute lub Min. Umożliwi to utworzenie fałszywego obiektu IOptions, który można przekazać do instancji kontrolera w testach jednostkowych. –

+0

@IsThatQueeblo Znalazłem prosty sposób na zainicjowanie instancji 'IOption' (napisałem odpowiedź), ale muszę również wyśmiać niektóre nagłówki w żądaniu HTTP. Wyobrażam sobie, że te szydercze ramy również to zapewnią? –

+0

Możliwy duplikat [.Net Core Unit Testing - Mock IOptions ] (http://stackoverflow.com/questions/40876507/net-core-unit-testing-mock-ioptionst) – Nkosi

Odpowiedz

19

Odkryłem odpowiedź wkrótce po opublikowaniu pytania.

klasa Zastosowanie Helper Microsoft.Extensions.Options.Options

Tworzy owijkę wokół instancji TOptions wrócić się jako nazwami opcji

AppSettings appSettings = new AppSettings() { ConnectionString = "..." }; 
IOptions<AppSettings> options = Options.Create(appSettings); 
MyController controller = new MyController(options); 
Powiązane problemy