2009-05-19 8 views
1

LTS Datacontextを持つコードを単体テストする方法を教えてください。私はテスト中にエラーが発生し、私はDatacontextsをたくさん持っていて、手動で接続文字列を追加することは痛みであり、何か示唆です。Linqto SQLクラスのテスト

答えて

1

まあ、私は次のようにそれはやり方:

マイデータレイヤは、インタフェースを持って、次のよう:

public class MyDataLayer : iMyDataLayer 
{ 
    public string GetMyData(parameters) 
    { 
    return myQueryValue; 
    } 

} 

public interface iMyDataLayer 
{ 
    public string GetMyData(parameters); 
} 

さて、私のコンストラクタで私のメインのコードベース(ビジネスロジックのために私は今、私のTDDプロジェクトに「偽」データサービスを作成することができ、これにより

private iMyDataLayer DataLayer; 

public class MyBusinessLogic(iMyDataLayer dataLayer) 
{ 
    DataLayer = dayaLayer 
} 

public string GetMyData(parameters) 
{ 
    return DataLayer.GetMyData(parameters) 
} 

::)私は、データ層のためのインタフェースに渡すためのパラメータを持つことになります

public class FakeDataLayer : iMyDataLayer 
{ 
     public string GetMyData(parameters) 
     { 
     return "Some Default Value or Object"; 
     } 

} 

私のテストを実行すると、私のビジネスロジックに偽のデータレイヤーオブジェクトを渡すことができます。ここから、偽のロジックが呼び出され、デフォルトの結果が返されます。

ここでは、ここで実際のデータを扱うことはできません。ただし、実際の有効/無効データで偽のオブジェクトを設定すると、データベースに接続することなくこの方法でビジネスロジックをテストできます。

これが役に立ちます。何かを明確にする必要があるかどうかを教えてください。

+0

ここで、テストでデータコンテキストをフックアップします。 – Greens

+0

ありがとうございました。 – Greens

+0

Fakeサービス(通常は静的な結果を返すためにそこにデータコンテキストを持つ)を使用することができるため、データコンテキストはありません。 – CodeLikeBeaker

関連する問題