2011-12-03 48 views
6

Có cách nào hợp lý để mở/kết quả cuộc gọi đến IDocumentSession.Query() không?Kiểm tra đơn vị Truy vấn RavenDb

Tôi có một lệnh mà tôi muốn xác minh rằng các phương thức được gọi trên các đối tượng (đó là "đơn vị" đang được thử nghiệm là lệnh KHÔNG các đối tượng mà lệnh phối hợp). Tôi không thể lưu các đối tượng Mock (thông qua RhinoMocks) vào một cá thể db nhúng, do đó tại thời điểm này và bị buộc phải xác minh trạng thái trên các đối tượng được gọi, thay vì chỉ xác minh rằng các phương thức chính xác đã được gọi.

Cảm ơn, Matt

Trả lời

6

Bạn đang tốt hơn khi sử dụng EmbeddableDocumentStore { RunInMemory = true} cho kiểm tra đơn vị. Điều đó nói rằng, IDocumentSession phải là rất dễ dàng giả lập.

+0

Cảm ơn Ayende, sự cố đang sử dụng EmbeddedDocumentStore nghĩa là tôi phải sử dụng các đối tượng thực không phải là mocks. IDocumentSession thực sự là rất dễ dàng để thử, IRavenQueryable không quá nhiều. – mattcole

+0

@ mattcole Có gì sai khi sử dụng 'EmbeddableDocumentStore {RunInMemory = true}' ?? Tại sao bạn muốn giả lập 'IDocumentSession'? Có .. chạy 'EmbeddableDocumentStore' là hơi chậm hơn so với một mô hình .. nhưng tôi khá chắc chắn rằng * một * trong những lý do chính' EmbeddableDocumentStore' đã được tạo ra, là để thử nghiệm đơn vị. –

+1

Tôi đang chiến đấu với 2 thứ trong đầu của tôi vào lúc này: 1. Đừng bảo tôi đừng chế giễu - đó là mùi hôi đối với tôi mà tôi không thể. 2. Khi sử dụng EmbeddableDocumentStore, các thử nghiệm đang chạy rất chậm - vì vậy tôi muốn giả lập! – Ronnie