TypeMock Islolatorを使わずにできますか? メタデータのみの接続文字列を渡すなど、オンラインでいくつかの提案を見つけましたが、TypeMock 以外に遭遇したものは何もなく、単体テストのためにサービスに注入できるモック ObjectContext を本当に許可しているようです。TypeMock の $$ を下げる必要がありますか、それとも代替手段はありますか? オープンソースの TypeMock に匹敵するものを作成できた人はいませんか?
4 に答える
私は嘲笑せずにEF4を簡単に単体テストしています。私がしたことは、http://elegantcode.com/2009/12/15/entity-framework-ef4-generic-repository-and-unit-of-work-prototype/のコードをベースとしてリポジトリ インターフェイスを作成することでした。次に、インターフェイスInMemoryRepository<T>
を使用するクラスを作成しました。次に、をクラスの内部にIRepository
置き換え、それに応じて取得メソッドを変更しました。IObjectSet<T>
List<T>
したがって、単体テストを行う必要がある場合は、DataRepository ではなく InMemoryRepository を渡します。
Linq2Entity クエリをインターフェイスの背後に配置し、実際のデータベースに対して分離して単体テストを行います。
クエリ インターフェイスのモックを使用して、ビジネス ロジックのテストを記述します。ビジネス ロジックに Linq が入り込まないようにしてください。
RepositoryPattern を使用しないでください。
ObjectContext をプロキシ クラスにラップします。次に、それをクラスに注入します。
リポジトリ パターンが質問に対する唯一の答えだとは思いません (確かに、問題は回避されます)。
この回答が気に入りました-既存のコードベースにテストを導入する方が適切だと思います ObjectContext のインターフェイスの作成