Tôi đã có thể giả lập DbSet
từ khung thực thể với Moq bằng cách sử dụng link này.Làm thế nào để Moq Entity Framework Các cuộc gọi SqlQuery
Tuy nhiên, bây giờ tôi muốn biết làm cách nào tôi có thể thực hiện cuộc gọi đến SqlQuery. Không chắc chắn nếu điều này là có thể hoặc làm thế nào khi nó dựa trên bối cảnh db giả lập biết những gì "truy vấn" đang được gọi.
Dưới đây là những gì tôi đang cố thử.
var myObjects = DbContext.Database
.SqlQuery<MyObject>("exec [dbo].[my_sproc] {0}", "some_value")
.ToList();
Tôi hiện chưa thử bất cứ điều gì vì không biết cách bắt đầu chế nhạo ví dụ này.
Các chế nhạo của DbSet
dưới và tái lặp, tôi một cách chính xác có thể thử trả lại một DbSet
của MyObject
's nhưng bây giờ đang cố gắng thử một sqlquery mà trả về một danh sách các MyObject
' s.
var dbContext = new Mock<MyDbContext>();
dbContext.Setup(m => m.MyObjects).Returns(mockObjects.Object);
dbContext.Setup(m => m.Database.SqlQuery... something along these lines
này làm việc rất lớn đối với tôi. Đối với tôi, điều này là thích hợp hơn để trừu tượng hóa logic truy vấn thành người trợ giúp, như trong câu trả lời được chấp nhận ở trên. – JamesWampler