2011-07-02 49 views
5

我在我的項目中進行DAO單元測試,使用ObjectSet類時出現問題。我必須創建一個新的ObjectSet,但爲了做到這一點,我不能連接到數據庫。所以我不能使用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

你在測試?你不應該在你的單元測試中需要實際的ObjectSet實例,除非你是單元測試EF代碼。改爲使用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>();