Web API RouteUrl在测试中返回空异常

本文关键字:返回 异常 测试 API RouteUrl Web | 更新日期: 2023-09-27 18:05:59

我是一个新的单元测试,我试图在Visual Studio 2012中使用Moq和MSTest来为我的一个应用程序创建一个方法测试。应用程序正常工作,但是当我运行我的测试时,我在下面得到一个空引用异常:

var fooURL = Url.RouteUrl("MyApi", new { httproute = string.Empty, controller = "MyController", id = id }, Request.Url.Scheme);

我试着阅读和包装我的头围绕ASP。. NET MVC:对使用UrlHelper的控制器进行单元测试,但这些控制器似乎与测试url本身有关。我更关心的是测试函数后面的内容。

在上面的链接中提到的设置太少(或太多)让我的测试工作?还是我看错方向了?

Web API RouteUrl在测试中返回空异常

根据你的评论,Request似乎是空的。我建议你用谷歌搜索一下如何模拟请求。

我个人喜欢Ninject/Moq。这是一个非常容易使用,强大的组合。你可以这样做:

  • 创建一个IHttpRequest接口,其中包含您需要模拟的任何内容(在本例中,仅为Url属性)
  • 使用Ninject来绑定你的生产应用(全局)。asax的app-start事件)到真实请求(Kernal.Bind<IHttpRequest>().To(HttpRequest))
  • 在您的测试用例中,有一个基测试类或一个全局测试运行类绑定到您的模拟类(或new Mock<IHttpRequest>()实例)

你可能不得不让你的接口从真正的HttpRequest类复制必要的方法/签名。如果这不起作用,您将需要创建一个包装器类来实现接口并将调用委托给真正的HttpRequest实例。