2016-12-30 50 views
12

我有一個.NET核心MVC休息服務。 我有一個我想測試的控制器。此控制器具有IOptions的構造函數參數,其中AppSettings是我的配置設置類(我存儲了我的數據庫連接字符串)。它從Startup.cs中ConfigureServices中的設置中注入。如何初始化用於單元測試.NET核心MVC服務的IOption <AppSettings>?

其餘服務有效。我的問題是我建立了一個MSTest測試項目來測試這個服務。我無法弄清楚如何初始化一個IOptions實例來滿足我的控制器的構造函數。

+0

你可能想看看像NSubstitute或起訂量嘲弄的框架。這將允許您創建一個模擬IOptions對象,您可以在單元測試中將其傳遞到控制器的實例中。 –

+0

@IsThatQueeblo我想出了一個簡單的方法來初始化'IOption'的一個實例(我發佈了一個答案),但是我也需要在Http請求中模擬一些頭文件。我想象那些模擬框架也會提供這個框架? –

+0

[.Net核心單元測試 - 模擬IOptions ](http://stackoverflow.com/questions/40876507/net-core-unit-testing-mock-ioptionst)可能的重複 – Nkosi

回答

19

發佈問題後不久我發現了答案。

使用Helper類Microsoft.Extensions.Options.Options

創建一個包裝圍繞TOptions的實例來自動返回的 IOptions

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