【问题标题】:How can I create an instance of an ObjectSet?如何创建 ObjectSet 的实例?
【发布时间】:2011-07-02 20:50:32
【问题描述】:

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

【问题讨论】:

    标签: c# unit-testing entity-framework objectset


    【解决方案1】:

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

    【讨论】:

      【解决方案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>();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 2013-05-08
        相关资源
        最近更新 更多