thử nghiệm tự động về cơ bản là luôn luôn là một nỗ lực hợp lý :)
Bước đầu tiên để có thể kiểm tra điều này là phải có lợi nhuận Logic Data Access của bạn an IDataReader
thay vì một số SqlDataReader
- SqlDataReader
triển khai IDataReader
, vì vậy không có vấn đề gì ở đó.
Trong thử nghiệm đơn vị của bạn, bạn có thể xây dựng và điền các đối tượng DataTable
theo cách thủ công và gọi dataTable.CreateDataReader()
để nhận được IDataReader
để chuyển vào đối tượng đang thử nghiệm.
Sửa
Cung cấp các bài kiểm tra của bạn với một tập hợp các dữ liệu mẫu, tôi muốn đề nghị sử dụng một ObjectMother cho mỗi bảng dữ liệu bạn sử dụng, giữ cho việc tạo ra các bảng dữ liệu ở một nơi chuyên dụng. Sau đó, bạn có thể đặt các phương thức trên mỗi lớp ObjectMethod
để cập nhật dữ liệu nhất định theo cách được đánh máy mạnh mẽ. Ví dụ:
public class PersonalDetailsBuilder
{
private DataTable _dataTable;
public PersonalDetailsBuilder CreateNewTable()
{
this._dataTable = new DataTable("CustomerPersonalDetails")
{
Columns = new[]
{
new DataColumn("CustomerId", typeof(int)),
new DataColumn("CustomerName", typeof(string))
}
};
return this;
}
public PersonalDetailsBuilder AddStandardData(int numberOfRows = 3)
{
foreach (int i in Enumerable.Range(1, numberOfRows + 1))
{
this.AddRow(i, "Customer " + i);
}
return this;
}
public PersonalDetailsBuilder AddRow(int customerId, string customerName)
{
this._dataTable.Rows.Add(customerId, customerName);
return this;
}
public IDataReader ToDataReader()
{
return this._dataTable.CreateDataReader();
}
}
... mà sau đó bạn có thể sử dụng như thế này để có được một trình đọc dữ liệu:
IDataReader customerDetailsReader = new PersonalDetailsBuilder()
.CreateNewTable()
.AddStandardData()
.AddRow(17, "Customer 17")
.ToDataReader();
Nguồn
2012-03-28 14:00:51
Hãy tưởng tượng rằng một trong những đối tượng IDataReader của chúng tôi trả về thông tin chi tiết về khách hàng: RS1 = chi tiết cá nhân; rs2 = quyền; rs3 - xxx vv Hầu hết các thử nghiệm sẽ sử dụng điều này như một tập dữ liệu mặc định. Một số thử nghiệm có thể muốn sử dụng hầu hết các giá trị này, nhưng ghi đè một số thuộc tính trong datatables. Làm thế nào là dễ dàng? Giống như thừa kế .... – DrGriff
Tôi không chắc tôi hiểu - ý của bạn là một trình đọc dữ liệu đơn lẻ cho nhiều tập hợp kết quả hoặc một bộ đọc dữ liệu? Trong mọi trường hợp, tôi đã cập nhật câu trả lời của mình. –
Tại sao lại là downvote? Bất kỳ ai...? –