Tôi đang tạo một thử nghiệm đơn vị gọi phương thức tác vụ tạo. Phương thức tạo nhiệm vụ gọi một số đối tượng bên ngoài giả định là mục đích của thử nghiệm của tôi, nhưng bên trong phương pháp thử nghiệm của tôi cũng có một cuộc gọi SaveChanges
để lưu tác vụ của tôi. Điều tôi đang cố gắng làm là cắt lớp DbContext
bên trong System.Data.Entity
để phương pháp SaveChanges
không còn truy cập cơ sở dữ liệu nữa.Làm thế nào để Shim DbContext với Microsoft Fakes?
Tôi đã thêm một hội đồng giả cho System.Data.Entity
nhưng khi tôi sử dụng System.Data.Entity
.Fakes nó nói "không thể giải quyết biểu tượng 'Fakes'", mặc dù tôi có thể truy cập System.Data.Fakes
(nhưng tôi have't thêm một hội đồng giả cho System.Data)
Tôi đã giả mạo các phương pháp khác trong ngữ cảnh thực thể của mình, nhưng tôi không thể giả mạo phương thức SaveChanges trên thực thể của tôi vì phương thức được kế thừa từ DbContext.
ShimDBEntities.AllInstances.SaveChanges = (x) => { ... };
đoạn trên của mã cho biết "không thể giải quyết biểu tượng 'SaveChanges'".
Vậy làm cách nào để tôi có thể sử dụng phần mềm Microsoft Fakes?
Tôi không phải là như vậy một fan hâm mộ của miếng chêm, đặc biệt là trên DbContext của bạn. Tôi nghĩ bạn có thể cần phải xem xét lại thiết kế của mình để đơn vị kiểm tra mã của bạn tốt hơn. Kiểm tra bài đăng trên blog của tôi về chủ đề này: http://sitecore.paragon-inc.com/resources/blogs-posts/the-repo-man – IronMan84
cảm ơn, nhưng dự án đã được sản xuất và thiết kế chưa được nghĩ đến có thể kiểm tra được nên tôi đã cố gắng làm việc với những gì tôi có –