首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架4,MOQ,

实体框架4,MOQ,
EN

Stack Overflow用户
提问于 2010-10-29 23:14:07
回答 2查看 2.5K关注 0票数 2

我使用的是EF4、Microsoft.Entity.CTP和最新的最新最新版本。我正在尝试创建一个通用的存储库类,并使用MOQ对DBContext进行moq。每当我运行我的moq测试时,我在this.context.Set().Add(Entity)上得到"object reference not set to an instance of an object“;我不明白为什么。代码在没有moq的情况下可以正常运行。

代码语言:javascript
复制
public class GenericRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class
{
    private IContext context;

    public GenericRepository(IContext context)
    {
        this.context = context;
    }

    public IList<TEntity> List
    {
        get { return context.Set<TEntity>().ToList(); }
    }

    public void Create(TEntity entity)
    {
        this.context.Set<TEntity>().Add(entity);
        this.context.SaveChanges();
    }
}

var mock = new Mock<IContext>();
GenericRepository<Product> producRepository = new GenericRepository<Product>(mock.Object);

mock.Setup(x => x.Product.Add(productType));
mock.Setup(x => x.SaveChanges());

productRepository.Create(product);
mock.VerifyAll();
EN

回答 2

Stack Overflow用户

发布于 2010-10-30 23:38:01

您需要模拟Set后面的list实现。我不在自动取款机,但我知道它是个IDbSet。

票数 0
EN

Stack Overflow用户

发布于 2012-07-29 11:49:30

首先将您的代码定义从DbSet更改为IDbSet,然后您可以模拟它们。http://blogs.msdn.com/b/efdesign/archive/2010/06/21/productivity-improvements-for-the-entity-framework.aspx

我正在考虑更改我的DbContext.tt文件,以生成IDbSet而不是DbSet,但前提是我要让模拟起作用。

我并不是说这会让剩下的工作变得容易,但它会让你克服一个问题。我需要帮助的是在将我的代码优先定义更改为基于EF DbContext接口后该做些什么。例如,我创建DbSet对象的实例并添加它们。

代码语言:javascript
复制
Mock<IPosManContext> posManContext;

posManContext.Object.Set(typeof(note_template));

posManContext.Object.note_template.Add(
    new note_template()
    {
        note_template_id = 1,
        act_flag = "Y",
        desc_text = "Monday Monday",
        last_update_dtm = now,
        last_update_user_id = "hsimpson",
    });

但是我得到了DbSet为空的错误。

微软需要提供一个很好的例子来说明该怎么做。他们已经完成了一半,提供了用于模拟的公共接口,但我仍然需要更多的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4053198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档