Как я могу создать экземпляр ObjectSet? - PullRequest
7 голосов
/ 03 июля 2011

Я выполняю модульные тесты DAO в своем проекте, и у меня возникла проблема с использованием класса ObjectSet.Я должен создать новый ObjectSet, но для этого я не должен подключаться к БД.Поэтому я не могу использовать метод BusinessModelContainer s 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(...));  

Ответы [ 2 ]

12 голосов
/ 03 июля 2011

Что вы тестируете?Вам не нужен экземпляр реального ObjectSet в модульном тесте, если только вы не тестируете код EF.Вместо этого используйте макет IObjectSet.Невозможно получить экземпляр ObjectSet без контекста.

3 голосов
/ 03 апреля 2012
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>();
...