1

我有这样的课:

public class UrlHelperFacade:UrlHelper
{
    public UrlHelperFacade(RequestContext requestContext) : base(requestContext) 
    { 
    }

    public UrlHelperFacade(RequestContext requestContext, RouteCollection routeCollection):base(requestContext,routeCollection) 
    { 
    }

    public new virtual bool IsLocalUrl(string url)
    {
        return base.IsLocalUrl(url);
    }
}

我使用 NInject 在 global.asax 中绑定这个类:

 protected override IKernel CreateKernel()
    {
        var kernel = new StandardKernel();
        kernel.Bind<UrlHelper>().To<UrlHelperFacade>();
        return kernel;
    }

然后我注入我的控制器: [Inject] public new UrlHelperFacade Url { get; 放; }

当我使用属性 Url 时,我可以获得实例,但是当调用方法时失败:“IsLocalUrl”,

这是错误:

你调用的对象是空的。

堆栈跟踪:

在 System.Web.Mvc.UrlHelper.IsLocalUrl(字符串 url)

在 CARESTREAM.RISGC.RISLite.Framework.UrlHelperFacade.IsLocalUrl(String url) 在 d:\Projects\GCRIS\SRC\Web\RISLite\CARESTREAM.RISGC.RISLite.Framework\Utility\UrlHelperFacade.cs:line 23

在 CARESTREAM.RISGC.RISLite.Controllers.AccountController.LogOn(LogOnModel 模型,字符串 returnUrl) 在 d:\Projects\GCRIS\SRC\Web\RISLite\CARESTREAM.RISGC.RISLite.Controllers\Controllers\AccountController.cs:line 76

在 lambda_method(闭包,ControllerBase,对象 [])

在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,Object[] 参数)

在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 控制器上下文,IDictionary`2 参数)

在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext 控制器上下文,ActionDescriptor actionDescriptor,IDictionary`2 参数)

在 System.Web.Mvc.ControllerActionInvoker.<>c_DisplayClass13.b _10 ()

在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 过滤器,ActionExecutingContext preContext,Func`1 延续)

我注意到 requestContext 的成员 HttpContext 和 RouteData 为空。无论如何都要处理这个吗?我只想让 UrlHelper 进行单元测试。

4

0 回答 0