Tôi có một chức năng trong một bộ điều khiển mà tôi đang thử nghiệm đơn vị dự kiến các giá trị trong tiêu đề của yêu cầu http. Tôi không thể khởi tạo HttpContext vì nó là chỉ đọc.Mock HttpContext để kiểm tra đơn vị bộ điều khiển MVC lõi .NET?
chức năng điều khiển của tôi hy vọng một http yêu cầu giá trị tiêu đề cho "thiết bị-id"
[TestMethod]
public void TestValuesController()
{
ValuesController controller = new ValuesController();
//not valid controller.HttpContext is readonly
//controller.HttpContext = new DefaultHttpContext();
var result = controller.Get();
Assert.AreEqual(result.Count(), 2);
}
Có cách nào thẳng về phía trước để làm điều này mà không cần sử dụng một thư viện của bên thứ ba?
* Không * sử dụng HttpContext? Toàn bộ điểm của việc sử dụng bộ điều khiển là dữ liệu đi qua các tham số của bộ điều khiển. Nếu bộ điều khiển của bạn sử dụng HttpContext để đọc dữ liệu như thể nó là một trang WebForms, bạn có một vấn đề. –
@PanagiotisKanavos Giá trị trong tiêu đề là một phần thông tin cho biết cuộc gọi đến từ thiết bị di động nào. Điều này là cần thiết để lấy dữ liệu chính xác. ID thiết bị nằm trong tiêu đề vì ID là cần thiết để xác thực, được xử lý bởi bộ lọc tác vụ tùy chỉnh. Tôi có thể có thể vượt qua ID thiết bị như một tham số tuyến đường nhưng nó sẽ là dư thừa –
Kiểm tra FromHeaderAttribute nhưng cũng kiểm tra trùng lặp. HttpContext được tiêm thông qua cấu hình bây giờ –