2009-02-23 26 views
6

Tôi đang cố gắng bắt đầu với Moq và gặp khó khăn trong việc tìm kiếm bất kỳ tài nguyên tốt nào để thực hiện những gì tôi cần.Đổ bộ dữ liệu với Moq

Tôi có lớp Giao diện dữ liệu có phương thức Nhận trả về Tập dữ liệu qua Thủ tục được lưu trữ. Đây là cách mã được viết và tôi không thể thay đổi nó vào lúc này vì vậy nó phải được thực hiện theo cách này.

Tôi muốn kiểm tra lớp này bằng cách Mocking Tập dữ liệu và trả về dữ liệu để tôi không phải thực sự thực hiện cuộc gọi cơ sở dữ liệu.

Có ai đang làm việc này không và liệu đây có phải là nơi tốt để bắt đầu làm việc đó không?

Trả lời

7

Bạn không cần kết nối cơ sở dữ liệu để điền vào Tập dữ liệu. Bạn có thể mô phỏng nó như sau:

IDataInterface di = new Mock<IDataInterface>(); 
DataSet mockDataSet = CreateMockDataSet(); 
di.Expect(x => x.Get()).Returns(mockDataSet); 
something.UseDataInterface(di.Object); 

Điền vào một mô hình Số liệu khá là đau đớn. Nếu tôi đang làm điều này, tôi thường đặt một giao diện mặt tiền ở phía trước của DataSet trả về, đó là dễ dàng hơn để mô phỏng. Hoặc tôi thay đổi mã để sử dụng một DataTable, dễ dàng hơn để điền vào.

Hoặc, sử dụng cơ sở dữ liệu nhúng, chẳng hạn như SQLite hoặc SQL Server CE, cho các bài kiểm tra đơn vị của bạn.

+1

um ... vậy CreateMockDataSet() làm gì? Tôi nghĩ đó là câu hỏi –

+1

Điểm tốt. Tôi tin rằng OP nghĩ rằng họ cần thiết để giả lập giao diện của 'DataSet', và câu trả lời của tôi chỉ ra rằng điều này là không cần thiết. 'CreateMockDataSet()' sẽ chỉ tạo ra một loạt các trường hợp 'DataTable' và đặt chúng trong' DataSet' như thể chúng được trả về từ cơ sở dữ liệu thực. –

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