2009-04-02 10 views
19

私はデータベースにアクセスするためにエンティティフレームワークを使用しています。実際のデータに依存しない中間層クラスをテストできるように、ユニットテスト内でデータベースコンテキストをモックしたいと思います。私はこれについて最初に尋ねるのではないことを知っています(Mocking an Entity Framework Model)、いくつかのグーグルの後には、モデルのメタデータだけに基づいてコンテキストをインスタンス化することが可能かもしれないという本能があります。Mocking Entity Framework Context

誰でもこれを実行できましたか?

+0

別のレイヤーを作成する場合でも、EFはmMamDbEntities.SaveChanges()を使用するため、保存操作をどのように実行しますか。エンティティ参照が変更された後 –

+0

[Mock Entity Frameworkデータベース](http://stackoverflow.com/questions/6087857/mock-entity-framework-database/14406546#14406546)の質問に対する私の回答を参照してください。 Mockオブジェクトコンテキストは、T4テンプレートを使用してエンティティモデルから作成できます。これは通常のPOCOクラスが作成される方法であり、具体的なオブジェクトコンテキストでスワップ可能にするためのモックオブジェクトコンテキストとインタフェースを作成するためにかなり拡張することができます。 – NightOwl888

答えて

6

メタデータだけで、それに良い記事があり、一般的なユニットテストEFであるhereを使って行うことができます。

7

これを実行するよく知られた方法は、Repository patternを使用することです。これは、具体的なデータアクセス実装上のレイヤーとして機能し、テストダブルを挿入する場所を提供します。

+1

リポジトリパターン(これは良いアイデアです)でも、それを利用するためにObjectContextを保持することができます。 –

+1

EFで見たリポジトリパターンは、内部的にObjectContextを使用しています。 –

+3

ObjectContextは、通常、依存関係としてリポジトリに注入されるべきです - リポジトリと作業ユニットは直交しています。 –

関連する問題