2011-07-02 20 views
5

私のプロジェクトでDAO単体テストを作成していて、ObjectSetクラスを使って問題があります。新しいObjectSetを作成する必要がありますが、これを行うにはDBに接続しないでください。だから私はBusinessModelContainerCreateObjectSet()メソッドを使用することはできません。それなしでObjectSetを作成する方法はありますか?ObjectSetのインスタンスを作成するにはどうすればよいですか?

var mock = new Mock<IBusinessModelContainerWrapper>(); 
ObjectSet<Student> expectedStudent = ???; // how can I get an instance here? 
StudentDao studentDao = new StudentDao(mock.Object); 

expectedStudent.Add(someObj); 
mock.Setup(c => c.Students).Returns(expectedStudent); 

Assert.AreEqual(someObj, studentDao.GetByQuery(...)); 

答えて

10

あなたは何をテストしている:

ユニットテストコードはこのようなものですか? EFコードの単体テストでない限り、単体テストには実際のインスタンスObjectSetは必要ありません。代わりにIObjectSetのモックを使用してください。コンテキストなしでObjectSetのインスタンスを取得する方法はありません。

2
DAL.Moles.MDALEntities.Constructor = (a) => { }; 
DALEntities db = new DALEntities(); //Object Context 

System.Data.Objects.Moles.MObjectContext.AllInstances.CreateObjectSet<ObjectSetType>(
(a) => { return new System.Data.Objects.Moles.MObjectSet<ObjectSetType>(); } 
); 

ObjectSet<ObjectSetType> dbList = db.CreateObjectSet<ObjectSetType>();