0


1

LINQ to SQLのモック

LINQ to SQLを使用して小数を返すクラスを単体テストするための最良かつ最も簡単な方法は何ですか?それはモッキングによるものですか? もしそうなら私はこれについてどうやって行くのですか?

4 Answer


1


インターフェイスを実装するクラスでLINQ to SQLメソッドの呼び出しをラップして、モッキングが可能になるようにする必要があります。

とにかく、.NET 4では、LINQ to SQL(http://damieng.com/blog/2009/06/01/linq-toを使用するシナリオをテストするためのモックの使用に役立つ「ITable」インターフェイスが定義されています-sql-changes-in-net-40)。 別のオプションは、DataContext自体をモックすることです。例:http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspxを参照してください。


1


Linq to SQLを使用した単体テスト用の快適なモックソリューションを思い付くことができなかったため、別のルートを使用しました。

テストする既知の値を含むテストデータベースを作成しました。 次に、テストでデータの内容を変更したくないため、NUnitのXtUnit拡張機能を使用しました:http://weblogs.asp.net/rosherove/archive/2004/10/05/238201.aspx

この拡張機能は、テストが完了すると、テストがデータベースに加えた変更を魔法のように元に戻します。

私は嘘をつきません、この解決策はちょっといです。 しかし、それはまた、奇妙なモッキングの概念を考え出す必要もありません。 テストデータを確立したら、テストを書くのは非常に簡単です。 テストに必要なのは、クラスがExtensibleFixtureを継承していることを確認し、[DataRollBack]属性でテストをマークすることです。XtUnitが残りを行います。


0


*LINQ to SQL DataContextのモック作成に関する記事を参照してください。 探しているもののようです:

_ そのため、[通常]基になるデータソースに接続せずにLinq to SLQクエリを単体テストすることは実際には不可能です-理想的ではありません。 しかし、恐れないで、ここにこの問題の一般的な解決策があります _

そして、それは

_ したがって、データベースにバインドされたDataContextに依存せずに、CustomerControllerクラス内でLINQ to SQLクエリをテストする方法ができました。 _

さらに(上記の動作後)http://www.nmock.org/[NMock library]は、状況に応じてモックオブジェクトをプログラムするのに役立ち、これに対してより正式な方法でプログラムしたり、他のモックと統合したりするのに使用できます。 (私は試していません)。