2017-03-16 8 views
0

Effortを使用して偽のデータベースインスタンスを作成しようとしていますが、問題が発生しました。だから、私の知る限り、私が定義することができ、一般的なタイプを理解としてEffortとdbContextを使用してEntity Frameworkによって作成されたデータベースによるユニットテスト

public static T CreateTransient<T>() where T : ObjectContext; 

ObjectContextFactoryを定義するObjectContext種類を期待CreateTransistent一般的な方法があります

class MyObjectContextClass : ObjectContext 
{ 
    //Entity definition here 
} 

だから私はユニットテストクラスで次の操作を行うことができ:

var effortContext = ObjectContextFactory.CreateTransient<MyObjectContextClass>() 

これまでのところ、とても良いですか?だから私の質問があり、私はDbContextは、ラッパークラスであることがわかった

class MyRealDbContextClass : DbContext 
{ 
    // Entity definition here 
} 

、それはObjectContext

で構成されています:しかし、私のコンテキストクラスはdbContextクラスから継承どのように私は私のカスタムObjectContextので、私ができるの種類を取得することができます努力静的メソッドでそれを使用しますか?私のようなものが必要です:

var type = MyRealDbContextClass.GetObjectContextType(); 

をだから私ことができます:

var effortContext = ObjectContextFactory.CreateTransient<type>() 
+0

これを解明したことがありますか? – Beanwah

答えて

0

私が過去に行ったことは、このメソッドは、すべてで必要となりますので、私は(私のベーステストクラスでメソッドを定義することですテスト)のように、私のdbsetを生成する:

public static IDbSet<T> GenerateSet<T>(IList<T> data) where T : class 
    { 
     IQueryable<T> queryable = data.AsQueryable(); 
     IDbSet<T> dbSet = MockRepository.GenerateMock<IDbSet<T>, IQueryable>(); 
     dbSet.Stub(x => x.Provider).Return(queryable.Provider); 
     dbSet.Stub(x => x.Expression).Return(queryable.Expression); 
     dbSet.Stub(x => x.ElementType).Return(queryable.ElementType); 
     dbSet.Stub(x => x.GetEnumerator()).Return(null).WhenCalled(x => queryable.GetEnumerator()); 

     return dbSet; 
    } 

そして、私のテストクラスで私のような何かを行うことができます。

関連する問題