私たちはめちゃくちゃデータ駆動型のアプリケーションを持っています。アプリケーションの単体テストを行いたいのですが、データ量が多いため、開発者は完全に偽のリポジトリを構築することに抵抗があります。私は本当に彼らを責めません。
テストを既存のアプリケーションに後付けしていることを理解してください。最初からやり直す場合は、偽のリポジトリを使用した単体テストを容易にするために、アーキテクチャを大幅に変更します。
既知のmdfファイルをテストとともに配布してコピーし、それを使用してテストを実行したいと思います。このための承認された技術はありますか?私はテストdllへのリソースの埋め込みには精通していますが、mdfの埋め込みには精通していません。
解決策(一種):
最終的に、Linqデータコンテキストのモックに関するAndrew Tokeleyの投稿(http://andrewtokeley.net/archive/2008/07/06/mocking-linq-to-sql-datacontext.aspx)からDataContextWrapperを取得し、FakeDataContext.csを作成しました。それは基本的にリストの束です。
私は本当に野蛮なT4テンプレートを作成し(「select * FROM <#= table.BaseClass.QualifiedName#>」と考えてください)、既知の適切なデータベースからデータをコピーして、次のようなものでいっぱいの巨大なクラスを作成しました。
List<Customer> _customers = new List<Customer>();
_customers.Add(new Customer(){CustomerId = 1, CustomerName = "ACME"});
等
クラスは25K行ですが、t4がこれらすべての行を書き込むので、誰が気にしますか?これにより、データコンテキストだけをモックできるので、クエリが正しく行われたことをある程度保証して、偽のコンテキストに対してlinqをテストできます。元の開発者は大量のビジネスロジックをリポジトリに配置しているため、既知の適切なデータに対してロジックをテストできます。