MVC 单元测试控制器

Posted

技术标签:

【中文标题】MVC 单元测试控制器【英文标题】:MVC Unit Testing a controller 【发布时间】:2011-12-01 18:16:19 【问题描述】:

我有一个带有Authorize 属性的控制器:

public CustomerController:Controller  

    [Authorize]  
    public ActionResult GetCustomer(int id)  
      
        var model=db.Customers.where(c=>c.id==id);
        return View(model);   
    

我的问题是,如何测试具有Authorize 属性的控制器?

在从HttpContext进行测试之前,我们是否需要获取用户名和密码等用户信息?

模拟、依赖注入和控制反转是否与单元测试相关?如果是这样,你们能推荐一些网站或文档来学习这些主题吗?

【问题讨论】:

【参考方案1】:

这里有一些使用 mocks、DI、IoC、MVC 进行测试的好例子@

http://code.google.com/p/sutekishop/source/browse/trunk/Suteki.Shop/Suteki.Shop.Tests/#Suteki.Shop.Tests%2FControllers

作者不使用 Authorize 属性,而是使用自定义操作过滤器和我相信的基于角色的安全性。

【讨论】:

以上是关于MVC 单元测试控制器的主要内容,如果未能解决你的问题,请参考以下文章

用于单元测试 .NET 核心 MVC 控制器的模拟 HttpContext?

MVC 验证的单元测试

在 ASP.NET Core MVC API 控制器上对 AuthorizeAttribute 进行单元测试

MVC Web 应用程序中的控制器应该是可单元测试的吗?

我应该测试我的控制器(MVC)吗?

asp.net mvc中的单元测试问题?