2011-07-02 8 views
5

Estoy realizando pruebas de unidad DAO en mi proyecto y tengo un problema al usar la clase ObjectSet. Tengo que crear un nuevo ObjectSet pero para hacer esto, no debo conectarme al DB. Por lo tanto, no puedo usar el método BusinessModelContainerCreateObjectSet(). ¿Hay alguna manera de crear el ObjectSet sin él?¿Cómo puedo crear una instancia de un ObjectSet?

El código de prueba de unidad es la siguiente:

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

Respuesta

10

¿Qué estás poniendo a prueba? No necesita instancia de ObjectSet real en su prueba de unidad a menos que sea un código EF de prueba de unidad. Use el simulacro de IObjectSet en su lugar. No hay forma de obtener instancia de ObjectSet sin el contexto.

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>(); 
Cuestiones relacionadas