2

EntityFramework (最初にコード) に基づいてソリューションをテストする方法の 1 つは、(DbSet ではなく) IDbSet 型のプロパティを含むカスタム コンテキストのインターフェイスを作成することです。次に、単体テストで InMemoryDbSets を使用します。

私は EntityFramework を初めて使用しますが、それは素晴らしい方法のように思えました。しかし、それはまったく機能しませんか?InMemory DbSet を使用している場合、エンティティ オブジェクトの任意のプロパティを使用するクエリを作成して実行できます。それらが計算されたプロパティであっても。ただし、実行時に同じクエリが「指定された型メンバー 'PropertyName' は LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています。」をスローします。

したがって、IDbSets でカスタム コンテキストを使用している場合、(おそらく) 何かを理解できないか、単体テストをまったく実行できません。

4

1 に答える 1

0

わかりました。私は多くの調査を行いましたが、(IDbSetを公開したい場合)唯一の合理的な方法は統合テストを行うことだと思われます。ユニットテストを忘れてください。

LadislavMrnkaはそれをここで非常にうまく要約しました。 テストするEntityFramework4.1の偽のDbContext

また、Ayendeのブログ(http://ayende.com/)で、これが彼のやり方であることがわかりました。

于 2012-08-20T19:10:38.140 に答える