mvc中用于路由单元测试的测试方法出错



我正在MVC中创建一个测试项目来测试路由。

我收到这个错误

Test Name:  RouteWithControllerNoActionNoId
Test FullName:  test.Web.Tests.Routing.TestRoute.RouteWithControllerNoActionNoId
Test Source:    d:newtesttest.Web.TestsRoutingTestRoute.cs : line 17
Test Outcome:   Failed
Test Duration:  0:00:06.6382043
Result Message: 
Test method test.Web.Tests.Routing.TestRoute.RouteWithControllerNoActionNoId threw exception: 
System.MissingMethodException: Method not found: 'System.Web.Routing.RouteValueDictionary        System.Web.WebPages.TypeHelper.ObjectToDictionaryUncached(System.Object)'.
Result StackTrace:  
at System.Web.Mvc.RouteCollectionExtensions.CreateRouteValueDictionaryUncached(Object values)
at System.Web.Mvc.RouteCollectionExtensions.IgnoreRoute(RouteCollection routes, String url, Object constraints)
at System.Web.Mvc.RouteCollectionExtensions.IgnoreRoute(RouteCollection routes, String url)
at test.Web.RouteConfig.RegisterRoutes(RouteCollection routes) in d:newtesttest.WebApp_StartRouteConfig.cs:line 15
at test.Wesb.Tests.Routing.TestRoute.RouteWithControllerNoActionNoId() in d:newtesttest.Web.TestsRoutingTestRoute.cs:line 21

这是我的样本代码

    [TestMethod]
    public void RouteWithControllerNoActionNoId()
    {
        // Arrange
        var context = new StubHttpContextForRouting(requestUrl: "~/Home");
        var routes = new RouteCollection();
        RouteConfig.RegisterRoutes(routes);
        // Act
        RouteData routeData = routes.GetRouteData(context);
        // Assert
        Assert.IsNotNull(routeData);
        Assert.AreEqual("Home", routeData.Values["controller"]);
        Assert.AreEqual("Index", routeData.Values["action"]);
        Assert.AreEqual(UrlParameter.Optional, routeData.Values["id"]);
    }

我在这条线上出错了

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

在我的RouteConfig文件中

有人能帮我吗?

请参阅:Mvc 5.1 MissingMethodException System.Web.WebPages.TypeHelper.ObjectToDictionaryUncached

"在引用中,我发现System.Web.WebPages.dll 3.0.11001.0版本显示了这种类型的错误,但当我将其替换为System.Web.WebPages.dll 3.0.20129.0版本时,它就可以工作了。因此,只需从引用中删除旧版本并下载另一个版本,然后重新生成干净的解决方案,它就会工作。"

最新更新