2009-04-02 46 views
19

Tôi đang sử dụng khung thực thể để truy cập cơ sở dữ liệu của mình và tôi muốn thử nghiệm bối cảnh cơ sở dữ liệu bên trong các bài kiểm tra đơn vị của mình để tôi có thể kiểm tra các lớp bậc trung của mình không phụ thuộc vào dữ liệu thực. Tôi biết rằng tôi không phải là người đầu tiên hỏi về điều này (Mocking an Entity Framework Model), nhưng sau khi một số googling tôi có một bản năng rằng nó có thể có thể nhanh chóng bối cảnh dựa trên siêu dữ liệu của mô hình một mình.Mocking Entity Framework Bối cảnh

Có ai có thể thực hiện việc này không?

+0

Ngay cả khi tạo một lớp khác, bạn sẽ thực hiện thao tác lưu như thế nào - vì EF sử dụng mMamDbEntities.SaveChanges(); sau khi tham chiếu Thực thể đã được biên soạn –

+0

Xem câu trả lời của tôi cho câu hỏi [Cơ sở dữ liệu Khung thực thể Mock] (http://stackoverflow.com/questions/6087857/mock-entity-framework-database/14406546#14406546). Một bối cảnh đối tượng giả có thể được tạo ra từ mô hình thực thể của bạn bằng cách sử dụng một mẫu T4. Đây là cách các lớp POCO thông thường được tạo ra, và nó có thể được mở rộng khá dễ dàng để tạo ra một bối cảnh đối tượng giả và giao diện để làm cho nó có thể thay thế được với bối cảnh đối tượng cụ thể của bạn. – NightOwl888

Trả lời

6

Bạn có thể làm điều đó chỉ với siêu dữ liệu, có một bài viết hay về nó và kiểm tra đơn vị EF nói chung, here.

7

Cách nổi tiếng để thực hiện việc này là sử dụng Repository pattern. Điều này hoạt động như một lớp trên thực thi truy cập dữ liệu cụ thể của bạn và cung cấp một nơi để tiêm đôi kiểm tra.

+1

Ngay cả với mẫu kho lưu trữ (chắc chắn là một ý tưởng hay), bạn vẫn có thể muốn giữ một ObjectContext xung quanh để tận dụng nó. –

+1

Các mẫu kho lưu trữ mà tôi đã thấy cho EF sử dụng ObjectContext trong nội bộ. –

+3

ObjectContext thường được tiêm vào kho lưu trữ dưới dạng phụ thuộc - Kho lưu trữ và Đơn vị công việc là trực giao. –

Các vấn đề liên quan