2011-07-02 12 views
5

Sto effettuando test unità DAO nel mio progetto e ho un problema con la classe ObjectSet. Devo creare un nuovo ObjectSet ma per fare questo, non devo connettermi al DB. Quindi non posso usare il metodo CreateObjectSet()BusinessModelContainer. C'è un modo per creare il ObjectSet senza di esso?Come posso creare un'istanza di un ObjectSet?

Il codice di unit test è come questo:

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

risposta

10

Cosa stai testando? Non dovresti avere bisogno di una istanza di ObjectSet reale nel tuo test di unità a meno che tu non stia testando il codice EF dell'unità. Usa invece una simulazione di IObjectSet. Non c'è modo di ottenere l'istanza di ObjectSet senza il contesto.

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>(); 
Problemi correlati