2016-12-30 13 views
12

Tôi có dịch vụ lưu trữ MVC lõi .NET. Tôi có một bộ điều khiển tôi muốn kiểm tra. Bộ điều khiển này có một đối số hàm tạo của IOptions trong đó AppSettings là lớp của tôi cho các thiết lập cấu hình (tôi lưu trữ chuỗi kết nối cơ sở dữ liệu của mình trong đó). Nó được tiêm từ thiết lập trong ConfigureServices trong Startup.csCách khởi tạo IOption <AppSettings> để kiểm tra đơn vị dịch vụ MVC lõi .NET?

Dịch vụ còn lại hoạt động. Vấn đề của tôi là tôi đã thiết lập một dự án thử nghiệm MSTest để kiểm tra dịch vụ. Tôi không thể hiểu làm thế nào để khởi tạo một thể hiện của IOptions để đáp ứng các nhà xây dựng của bộ điều khiển của tôi.

+0

Bạn có thể muốn nhìn vào một khuôn khổ mocking như NSubstitute hoặc Moq. Điều này sẽ cho phép bạn tạo một đối tượng IOptions giả lập mà bạn có thể truyền vào thể hiện của bộ điều khiển của bạn trong các bài kiểm tra đơn vị. –

+0

@IsThatQueeblo Tôi đã tìm ra một cách đơn giản để khởi tạo một thể hiện 'IOption' (tôi đã đăng câu trả lời) tuy nhiên tôi cũng cần giả lập một số tiêu đề trong yêu cầu Http. Tôi tưởng tượng những khuôn khổ mocking sẽ cung cấp đó là tốt? –

+0

Bản sao có thể có của [.Net Core Unit Testing - Mock IOptions ] (http://stackoverflow.com/questions/40876507/net-core-unit-testing-mock-ioptionst) – Nkosi

Trả lời

19

Tôi đã phát hiện ra câu trả lời ngay sau khi đăng câu hỏi.

lớp sử dụng Helper Microsoft.Extensions.Options.Options

Tạo một wrapper xung quanh một thể hiện của TOptions trở lại chính nó như là IOptions

AppSettings appSettings = new AppSettings() { ConnectionString = "..." }; 
IOptions<AppSettings> options = Options.Create(appSettings); 
MyController controller = new MyController(options); 
Các vấn đề liên quan