相关疑难解决方法(0)

实体框架4.1的假DbContext测试

我正在使用本教程伪造我的DbContext并测试:http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic -repository /

但我必须更改FakeMainModuleContext实现以在我的控制器中使用:

public class FakeQuestiona2011Context : IQuestiona2011Context
{
    private IDbSet<Credencial> _credencial;
    private IDbSet<Perfil> _perfil;
    private IDbSet<Apurador> _apurador;
    private IDbSet<Entrevistado> _entrevistado;
    private IDbSet<Setor> _setor;
    private IDbSet<Secretaria> _secretaria;
    private IDbSet<Pesquisa> _pesquisa;
    private IDbSet<Pergunta> _pergunta;
    private IDbSet<Resposta> _resposta;

    public IDbSet<Credencial> Credencial { get { return _credencial ?? (_credencial = new FakeDbSet<Credencial>()); } set { } }
    public IDbSet<Perfil> Perfil { get { return _perfil ?? (_perfil = new FakeDbSet<Perfil>()); } set { } }
    public IDbSet<Apurador> Apurador { get …
Run Code Online (Sandbox Code Playgroud)

.net tdd asp.net-mvc unit-testing entity-framework

46
推荐指数
3
解决办法
3万
查看次数

如何使用存储库模式伪造Entity Framework中的DbContext.Entry方法

因为我想对我的代码进行单元测试,所以我在MVC4应用程序中实现了存储库模式.我设法创建了一个Context Interface,一个假的Context,并System.Data.Entity.DbSet通过遵循这个代码使用a的假实现.

不幸的是,就像我面前的两张海报(这里这里),我没有设法嘲笑DbContext.Entry method.我使用此方法更新代码中的数据库条目,如下所示:

DbContext.Entry(order).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

我还没有找到解决这个问题的方法,只有那些人说:

"这个代码单元测试的重点是什么?你伪造了Find方法,然后伪造DbEntityEntry并且没有真正的逻辑可以测试."

或者

在继续之前,请阅读链接和所有相关问题.(...)如果要测试存储库,请创建与真实数据库对话的集成测试.

这一切都很好,但仍然没有回答这个问题.我阅读了批评,我仍然想要这个Entry方法,所以我将能够使用假上下文并在我的单元测试中使用模拟对象.当然我也会使用集成测试,但它们并不像某些快速单元测试那么快.

我尝试一些实现时收到的错误是 Error 2 'Project.Models.Order' does not contain a definition for 'State' and no extension method 'State' accepting a first argument of type '[whatever return type I use]' could be found (are you missing a using directive or an assembly reference?)

我希望有人可以帮我制作一个假的DbContext.Entry方法.

c# unit-testing entity-framework repository-pattern asp.net-mvc-4

39
推荐指数
2
解决办法
2万
查看次数

存储库本身通常不会被测试?

对不起,我不知道存储库模式,单元测试和orm工具.

我一直在研究单元测试和存储库模式,得出了一些结论,我想知道我是不对的.

存储库模式有助于在控制器中替换单元测试,例如使用它,对吧?因为创建上下文(在EF中)或会话(在NH中)更难,对吧?存储库本身未经过测试?为什么?

使用EntityFramework或NHibernate与存储库模式,如果我想测试我的存储库,我需要进行集成测试?因为如果我使用我的上下文/会话的假实现,我没有进行真正的测试?因为上下文/会话本身就是存储库(我的意思是它们实现了添加,删除,编辑,GetById,GetAll等的真实逻辑)?

使用EF或NH的存储库模式就像一个包装器?(不仅是一个包装器,我知道这是域的导入概念.)

.net nhibernate unit-testing domain-driven-design entity-framework

11
推荐指数
2
解决办法
2948
查看次数