2016-12-30 12 views
12

.NET çekirdek MVC dinlenme servisim var. Test etmek istediğim bir kontrol cihazım var. Bu denetleyici, AppSettings'in yapılandırma ayarları için sınıfım olduğu IOptions'ın bir yapıcı argümanına sahiptir (veritabanı bağlantı dizgimi içine kaydediyorum). Bu, Startup.cs.NET çekirdek MVC hizmetini test etmek için IOption <AppSettings> nasıl başlatılır?

Yapılandırma Hizmetlerinde yapılan kurulumdan enjekte edilir. Sorunum, hizmeti test etmek için bir MSTest test projesi kurdum. Denetleyicimin yapıcısını tatmin etmek için IOptions örneğinin nasıl başlatılacağını anlayamıyorum.

+0

olarak kendini dönmek için TOptions örneği etrafında sarıcı oluşturur. Bu, birim testlerinde kontrolörünüzün örneğine geçebileceğiniz sahte bir IOptions nesnesi oluşturmanıza izin verecektir. –

+0

@IsThatQueeblo 'IOption' örneğini başlatmanın basit bir yolunu buldum (bir cevap yayınladım) ancak Http isteğindeki bazı başlıkları da taklit etmem gerekiyor. Bu alay çerçevelerinin de bunu sağlayacağını hayal ediyorum? –

+0

[.Net Çekirdek Birim Testi - Mock IOptions ] 'un olası kopyası (http://stackoverflow.com/questions/40876507/net-core-unit-testing-mock-ioptionst) – Nkosi

cevap

19

Soruyu yayınladıktan kısa bir süre sonra cevabı keşfettim.

kullanım Yardımcısı sınıf Microsoft.Extensions.Options.Options

Sen NSubstitute veya MOQ gibi alaycı bir çerçeve içine bakmak isteyebilirsiniz IOptions

AppSettings appSettings = new AppSettings() { ConnectionString = "..." }; 
IOptions<AppSettings> options = Options.Create(appSettings); 
MyController controller = new MyController(options); 
İlgili konular