asp.net mvc: how to mock Url.Content(“~”)?

后端 未结 4 1278
傲寒
傲寒 2021-01-19 07:12

anybody knows how to mock Url.Content(\"~\") ?

(BTW: I\'m using Moq)

4条回答
  •  误落风尘
    2021-01-19 08:10

    this is a method of mine that mocks the url.content (and also sets the IsAjaxRequest() to true)

    public static void SetContextWithAjaxRequestAndUrlContent(this BaseController controller)
    {
        var routes = new RouteCollection();
        RouteConfigurator.RegisterRoutesTo(routes);
    
    
        var httpContextBase = new Mock();
        var request = new Mock();
        var respone = new Mock();
    
    
        httpContextBase.Setup(x => x.Request).Returns(request.Object);
        httpContextBase.Setup(x => x.Response).Returns(respone.Object);
    
        request.Setup(x => x.Form).Returns(new NameValueCollection());
        request.SetupGet(x => x.Headers).Returns(new System.Net.WebHeaderCollection {{"X-Requested-With", "XMLHttpRequest"}});
        request.Setup(o => o.ApplicationPath).Returns("/Account");
        request.Setup(o => o["X-Requested-With"]).Returns("XMLHttpRequest");
    
        respone.Setup(o => o.ApplyAppPathModifier("/Account")).Returns("/Account");
    
        controller.ControllerContext = new ControllerContext(httpContextBase.Object, new RouteData(), controller);
    
        controller.Url = new UrlHelper(new RequestContext(controller.HttpContext, new RouteData()), routes);
    }
    

提交回复
热议问题