Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 如何在实体框架中进行无存储库模式的单元测试_Entity Framework_Unit Testing - Fatal编程技术网

Entity framework 如何在实体框架中进行无存储库模式的单元测试

Entity framework 如何在实体框架中进行无存储库模式的单元测试,entity-framework,unit-testing,Entity Framework,Unit Testing,我已经在MVC中使用Unit of Work+Generic Repositories with Entity Framework有一段时间了,我正在寻找一种不用设置存储库就可以在控制器中对动作方法进行单元测试的方法 下面是我现在如何处理事情的一个例子: 我有一个从IUnitOfWork接口继承的工作单元。这个工作单元基本上为每个实体框架实体都有一个存储库,即用户实体的用户存储库。我还尝试在我的工作单元中使用通用存储库,但我发现我失去了实体框架提供的所有灵活性。我还有一个模拟工作单元,每个实体都

我已经在MVC中使用Unit of Work+Generic Repositories with Entity Framework有一段时间了,我正在寻找一种不用设置存储库就可以在控制器中对动作方法进行单元测试的方法

下面是我现在如何处理事情的一个例子:

我有一个从IUnitOfWork接口继承的工作单元。这个工作单元基本上为每个实体框架实体都有一个存储库,即用户实体的用户存储库。我还尝试在我的工作单元中使用通用存储库,但我发现我失去了实体框架提供的所有灵活性。我还有一个模拟工作单元,每个实体都有一个存储库。这个模拟工作单元被注入Ninject测试的控制器中

然而,我注意到这个工作单元正在创建一个厚厚的抽象层。我正在失去实体框架的灵活性,同时还要维护更多的代码。如果我采用通用存储库路线,那么工作单元代码就更易于管理,但这似乎不是最好的方法

我已经在线阅读了许多关于存储库模式的不同观点,例如实体框架已经实现了一个工作单元dbcontext和存储库dbset,因此人们可以从实体框架中获得更多信息,而无需使用通用存储库的中间工作单元层。此外,通用存储库暴露了实体框架内部,并且存在漏洞,因此它甚至无法在工作单元中使用通用存储库来抽象数据访问层


你们是否都知道一种不用存储库的单元测试方法,或者一种更倾向于使用MVC和实体框架对控制器操作进行单元测试的方法?

你们到底想测试什么?IQueryable不是一个实体框架内部,它存在于System.Linq命名空间中。Jasen,我已经更新了我的帖子,以解决我要测试的问题。谢谢查理·布朗,你说得对。我更新了我的帖子来反映这一点。我只在实际代码中涉及任何类似EF上下文的内容时才进行集成测试。模仿这一点就像创建一个有着不同规则的平行宇宙。除此之外,我对我为此而模拟的对象进行纯单元测试,但为此我不需要存储库。