我正在尝试学习单元测试,并且有一个超级简单的类,单元测试:
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我很好。 :)
答案 0 :(得分:2)
这里可以找到答案作为一个例子(要点): https://gist.github.com/johnnyreilly/4959924
以下是Stack Overflow相关问题: ASP.NET MVC: Unit testing controllers that use UrlHelper
两者都应该帮助你走上正确的轨道。
归结为模仿HttpRequestBase
和HttpResponseBase
,因此您可以模拟HttpContextBase
类正在使用的实际UrlHelper
。
答案 1 :(得分:0)
意识到这是一个古老的问题,但对于其他可能会停下来的人来说,请查看LosTechies总是乐于助人的工作人员对单元测试简单的ASP.NET MVC控制器:http://lostechies.com/chrismissal/2010/02/05/unit-testing-simple-asp-net-mvc-controllers/