2011-07-02 28 views
5

Projemde DAO birim testleri yapıyorum ve ObjectSet sınıfını kullanırken bir sorun yaşıyorum. Yeni bir ObjectSet oluşturmak zorundayım, ancak bunu yapmak için DB'ye bağlanmamalıyım. Bu yüzden BusinessModelContainer'un CreateObjectSet() yöntemini kullanamıyorum. ObjectSet'u onsuz oluşturmanın bir yolu var mı? Bir ObjectSet örneğini nasıl oluşturabilirim?

birim test kodu

şu şekildedir: Ne test ediyoruz

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(...)); 

cevap

10

? EF kodunu test etmediğiniz sürece, birim testinizde gerçek ObjectSet örneğine ihtiyacınız olmamalıdır. Bunun yerine IObjectSet modelini kullanın. Bağlam olmadan ObjectSet örneğini almanın bir yolu yoktur.

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>(); 
İlgili konular