c# - 如何在不使用存储库模式的情况下对 ASP.NET MVC Controller 进行单元测试

标签 c# asp.net-mvc unit-testing code-first

我只是想知道是否有一种方法可以对我的一些 Controller Action 进行单元测试 不使用存储库模式的 MVC。我开发了一个 ASP.NET MVC 站点,但在初始阶段没有进行单元测试。现在我想向我的导师演示一些单元测试,使用我的 Controller 中可能有两个或多个 Action 。我的大部分操作逻辑从数据库获取数据,一个 Controller 从不同的表获取数据,即一个 Controller 中的操作从不同的表读取。我认为可以使用通用存储库模式进行测试。作为初学者,我发现我只能对不是来自数据库的代码进行单元测试,但不幸的是,我的 Controller Actions 中的大部分代码都来自数据库。我在我的数据库中使用 Visual Studio 中的默认测试工具和 EF 代码优先方法。
例如,我只想对以下操作进行单元测试,而不必对同一 Controller 中的其他操作进行单元测试。

public ActionResult Index()
    {
        var model = _db.PhotoGallery;
        return View(model);
    }

这只是为了演示目的。

最佳答案

根据定义,单元测试应该只影响它调用的方法。如果你能找到一种方法来模拟你的 _db 对象,这样你实际上不会导致数据库往返,那么你可以对依赖它的这个方法进行单元测试。否则,不。

_db 字段的类型是接口(interface)吗?它是通过注入(inject)提供的吗?如果是这样,您很可能可以对该方法进行单元测试。

关于c# - 如何在不使用存储库模式的情况下对 ASP.NET MVC Controller 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10091198/

相关文章:

unit-testing - 如何使用 NHibernate 删除所有数据库数据?

c# - VB.NET 有类似 "global::"的东西吗?

c# - 将字节数组转换为托管结构

c# - 对 AuthorizeAttribute 进行异常(exception)处理

jquery - 如何在 ASP.NET MVC 应用程序中管理单个 JavaScript 文件?

unit-testing - 用Spock检查基数时调用太少0

C# 代码将使用 for 循环创建的文本框的值传递到另一个页面

c# - 如何在 Unity 项目上禁用网格线>

asp.net-mvc - 在 ASP.NET MVC 中构建复杂的 Web 表单

unit-testing - 网站测试员的文件?