Tôi có một phương pháp hành động như thế này trong bộ điều khiển của tôiLàm cách nào để moq ISingleResult? Tôi có nên không? hoặc có một phương pháp tốt hơn?
public ActionResult Index()
{
using (NorthwindDataContext db = new NorthwindDatacontext())
{
var results = db.GetRecordSets(arg1, ....).ToList();
// use results as list
}
return View();
}
và tôi muốn bắt đầu thực hiện các bài kiểm tra cho nó (vâng, sau khi nó được xây dựng, không phải trước ... nhưng mã đã được viết trước khi tôi bắt đầu sử dụng TDD như vậy ...)
và tôi đã tìm ra rằng việc thêm một tài sản như thế này với bộ điều khiển
public delegate NorthwindDatacontext ContextBuilderDelegate();
public ContextBuilderDelegate ContextBuilder { get; set; }
tôi có thể thêm vào một cái gì đó constructor như thế này ...
0.123.ContextBuilder =() => new NorthwindDatacontext();
sau đó tôi có thể kiểm tra ActionMethod thiết lập thuộc tính ContextBuilder với một mô hình của NorthwindDataContext
var controller = new MyController();
var mockDataContext = new Mock<NorthwindDatacontext>();
controller.ContextBuilder =() => mockDataContext.Object;
... Nhưng tôi thấy không có cách nào để sử dụng này bởi vì tất cả các phương pháp sử dụng NorthwindDataContext ISingleResult như returnType và tôi không thể tìm cách tạo đối tượng với giao diện đó. Tôi đã thử điều này
var theResult = new List<GetRecordSetsResult>();
// fill the data structure here with the provided result...
mockDataContext.Setup(c => c. GetRecordSets()).Returns(theResult as
ISingleResult<GetRecordSetsResult>);
nhưng nó không hoạt động vìResult là null khi được chuyển sang ISingleResult.
Có cách nào để tạo đối tượng ISingleResult để kiểm tra theo cách này hoặc tôi đang làm cách không chính xác để làm việc ở đây?
Cảm ơn trước
Cảm ơn câu hỏi của bạn và câu trả lời đầu tiên đã giúp tôi giải quyết vấn đề. – Odd