7

プロジェクトでDAOユニットテストを行っていますが、ObjectSetクラスの使用に問題があります。新しいものを作成するObjectSet必要がありますが、これを行うには、DBに接続してはなりません。BusinessModelContainerそのため、のCreateObjectSet()メソッドを使用できません。それなしで作成する方法はあり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(...));  
4

2 に答える 2

12

何をテストしていますか?ObjectSet単体テストで EF コードをテストする場合を除き、単体テストで real のインスタンスは必要ありません。IObjectSet代わりにモックを使用してください。ObjectSetコンテキストなしで のインスタンスを取得する方法はありません。

于 2011-07-02T21:07:53.613 に答える
3
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>();
于 2012-04-03T03:22:27.413 に答える