0

単体テストに少し慣れているので、うまくいけばこの質問には意味があります。私のUnitTestは私のUnitOfWork、リポジトリ、およびコンテキスト、またはコンテキストをモックするべきですか?

マイセットアップ: のVisual Studio 2010の Entity Frameworkの4.1 部品番号

私は私のDALでのUnitOfWorkを使用して、私のBALにあるサービスクラスを持っています。 UnitOfWorkは、さまざまなリポジトリへのアクセスを管理します。これらのリポジトリは、Contextオブジェクトを通じてデータベースにアクセスします。

ラムダ式を利用した非常に複雑な「GetNextObject」型ロジックを担当するサービスクラスpublicメソッドの単体テストを作成したいと考えています。

質問:私は非常に簡単に私のDBContextをモックし、サービスメソッドをテストするオブジェクトのDBSetを作成することができます(サービスクラスは本質的にリポジトリを照会します)。これを行う正しい方法ですか、これ以上の統合テストですか?コンテキストを嘲笑することでデータベースを削除しましたが、私はまだUnitOfWorkクラスとRepositoryクラスを使用しています。私は代わりに、これらのすべてのオブジェクトの複雑な嘲笑を行う必要がありますか?

ありがとうございます! AFrieze

答えて

0

あなたのサービスはリポジトリとユニットワークだけに依存していると仮定すると、DbConextをモックする必要はありませんか?一般に、リポジトリ/ユニットワークは基本的にdbcontextのラッパーであるため、テストすることはあまりないため、主にDbContextをモックしません。サービスをテストするには、リポジトリとユニットワークを嘲笑するだけで十分です。 DB操作をテストする場合は、統合テストを行います。

+0

基本的には、オブジェクトを照会するためにunitofwork/repositoryを使用するサービスクラスのメソッドがあります。私は、クエリのロジックをテストし、正しいオブジェクトを取得していることを確認したい。私の考えは、コンテキストを模擬し、本質的に異なる状況をテストするためにメモリ内のデータベース設定を使用することでした。 – AFrieze

+0

unitofwork/repositoryを嘲笑することでクエリロジックをテストできますか?私はこの答えがあなたをより良く奉仕することを信じます。 http://stackoverflow.com/questions/6766478/unit-testing-dbcontext –