7

我正在我的项目中进行 DAO 单元测试,但我在使用ObjectSet该类时遇到了问题。我必须创建一个新的ObjectSet,但为了做到这一点,我不能连接到数据库。所以我不能使用BusinessModelContainer'sCreateObjectSet()方法。有没有办法创建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(...));  
4

2 回答 2

12

你在测试什么?ObjectSet除非您正在对 EF 代码进行单元测试,否则您在单元测试中不应该需要 real 的实例。改用模拟IObjectSetObjectSet没有上下文就无法获取实例。

于 2011-07-02T21:07:53.613 回答
3
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>();
于 2012-04-03T03:22:27.413 回答