我正在使用本教程伪造我的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) 因为我想对我的代码进行单元测试,所以我在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
对不起,我不知道存储库模式,单元测试和orm工具.
我一直在研究单元测试和存储库模式,得出了一些结论,我想知道我是不对的.
存储库模式有助于在控制器中替换单元测试,例如使用它,对吧?因为创建上下文(在EF中)或会话(在NH中)更难,对吧?存储库本身未经过测试?为什么?
使用EntityFramework或NHibernate与存储库模式,如果我想测试我的存储库,我需要进行集成测试?因为如果我使用我的上下文/会话的假实现,我没有进行真正的测试?因为上下文/会话本身就是存储库(我的意思是它们实现了添加,删除,编辑,GetById,GetAll等的真实逻辑)?
使用EF或NH的存储库模式就像一个包装器?(不仅是一个包装器,我知道这是域的导入概念.)
.net nhibernate unit-testing domain-driven-design entity-framework