自動化されたテストは、基本的に常に賢明な努力です:)
これをテストできるようにするための最初のステップは、データ アクセス ロジックが -implements ではなく を返すようにIDataReader
することです。問題はありません。SqlDataReader
SqlDataReader
IDataReader
単体テストでは、DataTable
オブジェクトを手動で作成および設定し、呼び出しdataTable.CreateDataReader()
て をIDataReader
テスト対象のオブジェクトに渡すことができます。
編集
テストに一連のサンプル データを提供するには、使用するデータ テーブルごとにObjectMotherを使用し、データ テーブルの作成を 1 つの専用の場所に保持することをお勧めします。次に、各クラスにメソッドを配置ObjectMethod
して、厳密に型指定された方法で特定のデータを更新できます。例えば:
public class PersonalDetailsBuilder
{
private DataTable _dataTable;
public PersonalDetailsBuilder CreateNewTable()
{
this._dataTable = new DataTable("CustomerPersonalDetails")
{
Columns =
{
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();
}
}
...次のように使用して、データリーダーを取得できます。
IDataReader customerDetailsReader = new PersonalDetailsBuilder()
.CreateNewTable()
.AddStandardData()
.AddRow(17, "Customer 17")
.ToDataReader();