2015-07-28 30 views
8

Tôi là đơn vị kiểm tra trình bao bọc cho trình điều khiển MongoDB C#. Tôi có dòng mã này:Làm thế nào để tôi Moq IFindFluent để cuộc gọi này đến ToListAsync hoạt động?

Collection.Find(predicate).ToListAsync(); 

đâu Collection là loại IMongoCollection<T>Find(predicate) lợi nhuận một ví dụ thực hiện IFindFluent<T, T>. ToListAsync() là phần mở rộng để chuyển kết quả thành danh sách, tôi giả sử.

Tôi đang cố gắng viết các bài kiểm tra đơn vị và tôi bị bối rối khi xử lý việc này. Tôi không thể làm cho một lớp bao bọc bởi vì đó là những gì tôi đang làm việc. Tôi muốn làm cho nó như vậy ToListAsync() trả về một danh sách được tạo ra HOẶC để thử các Find() để trả lại một cái gì đó mà có thể được thực hiện một danh sách.

Trả lời

2

Tôi đã tạo một lớp trừu tượng nhỏ cho điều này, vì tôi không thể tìm thấy bất kỳ thứ gì phù hợp và yêu cầu trợ giúp không có câu trả lời.

Tôi đã tạo một cặp giao diện/triển khai được gọi là AppCollection để xử lý giao diện MongoDB. IAppCollection sẽ có phương thức cho IAppCollection.ToList(predicate)AppCollection sẽ chạy cuộc gọi Collection.Find(predicate).ToListAsync();, trả lại danh sách. Sau đó, nó là một vấn đề tầm thường để chế giễu các IAppCollection để đảm bảo các cuộc gọi phải được thực hiện. Trong khi tôi không thể kiểm tra các biến vị ngữ trong LINQ bản địa, tôi có thể ít nhất biên dịch các biến vị ngữ và so sánh chúng với các đối tượng đi qua/thất bại.

+0

Tôi đang đấu tranh với chế nhạo IFindFluent cũng như và đã xem qua bài đăng của bạn. Bạn có thể cung cấp cho tôi việc triển khai giao diện IAppCollection của bạn để đưa thêm ánh sáng vào giải pháp của bạn không? Cảm ơn trước sự giúp đỡ của bạn – slanto

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