我是一个新的单元测试,我试图在Visual Studio 2012中使用Moq和MSTest来为我的一个应用程序创建一个方法的测试。该应用程序可以正常工作,但是当我运行我的测试时,我得到以下的空引用异常:
var fooURL = Url.RouteUrl("MyApi", new { httproute = string.Empty, controller = "MyController", id = id }, Request.Url.Scheme);
我试过在ASP.NET MVC: Unit testing controllers that use UrlHelper周围阅读和包裹我的头,但这些似乎与测试网址本身有关。我更关心的是测试我函数后面的内容。
上面链接中提到的设置是否太少(或太多)以使我的测试工作?或者我是朝错误的方向看的?
答案 0 :(得分:0)
根据您的评论,似乎Request
为空。我建议使用Google搜索how to mock out the request。
我个人喜欢Ninject / Moq。这是一个非常易于使用,功能强大的组合。你可以这样做:
Url
属性)Kernal.Bind<IHttpRequest>().To(HttpRequest)
)new Mock<IHttpRequest>()
实例)您可能必须使您的界面从真实HttpRequest
类复制必要的方法/签名。如果这不起作用,您将需要创建一个实现接口的包装类,并将调用委托给真实的HttpRequest
实例。