ASP.NET MVC简单控制器单元测试

时间:2013-08-15 15:41:25

标签: c# asp.net-mvc unit-testing moq

我正在尝试学习单元测试,并且有一个超级简单的类,单元测试:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new HomeViewModel
        {
            LogoUrl = this.Url.Content("~/Images/product.png")
       });
    }
}

[TestMethod]
public void Index()
{
    Assert.IsNotNull(new HomeController().Index() as ViewResult);
}

我得到空引用异常。我相信这与在单元测试中使用this.Url()而不使用HttpContext有关。

如何在仍然使用我的this.Url()的同时让单元测试通过?使用Moq我很好。 :)

2 个答案:

答案 0 :(得分:2)

这里可以找到答案作为一个例子(要点): https://gist.github.com/johnnyreilly/4959924

以下是Stack Overflow相关问题: ASP.NET MVC: Unit testing controllers that use UrlHelper

两者都应该帮助你走上正确的轨道。

归结为模仿HttpRequestBaseHttpResponseBase,因此您可以模拟HttpContextBase类正在使用的实际UrlHelper

答案 1 :(得分:0)

意识到这是一个古老的问题,但对于其他可能会停下来的人来说,请查看LosTechies总是乐于助人的工作人员对单元测试简单的ASP.NET MVC控制器:http://lostechies.com/chrismissal/2010/02/05/unit-testing-simple-asp-net-mvc-controllers/