データアクセスロジックコンポーネントの単体テストでは LINQ to SQL を使うと良い

データアクセスロジックコンポーネント(以下 Dalc)の単体テストが嫌い

特に更新系のメソッド。更新されたか確認するのが面倒くさいです。いつも、データベースから値を取得するために、テスト用の Dalc を作っていました。クラス作って、取得用 SQL 書いて…って、やってられない!

LINQ to SQL 使えばよくね?

最近気が付きました。LINQ to SQL を使って更新後のデータを取得すれば、わざわざ自分でテスト用 Dalc を作らなくてもいいのでは。

// データベース更新
HogeDalc dalc = new HogeDalc();
dalc.Update(data);

// 更新されたか確認
using(TestDataContext context = new TestDataContext())
{
    var actual = (from hoge in context.HogeTable
                 where hoge.Code == data.Code
                 select hoge).ToList().First();

    Assert.AreEuqal(data.Name, actual.Name);
}

すごく楽です。

何で今まで気づかなかったんだろう。LINQ to SQL ではなく、ADO.NET Entitiy Framework でもいいですね。

最初から製品コードで LINQ to SQL 使えればいいんだけど…

Dalc 内部で、パラメータをもとに複雑なクエリを動的に生成する場面が多いため、LINQ to SQL を採用できないのが残念なところ。
ADO.NET Entity Framework は現在調査中です。