使用MOQ模拟ASP.Net MVC控制器,我遵循这种方法:
var fakeHttpContext = new Mock<HttpContextBase>();
fakeHttpContext.Setup(t => t.User).Returns(genericPrincipal);
var request = new Mock<HttpRequestBase>();
var controllerContext = new Mock<ControllerContext>();
controllerContext.Setup(t => t.HttpContext)
.Returns(fakeHttpContext.Object);
var controller = InitMyontrollerConstroctor(controllerContext);
以下是我初始化mycontroller的方法:
var controller = new MyController(IService service)
{
ControllerContext = controllerContext.Object,
};
return controller;
但MyController
内部存在只读属性,该属性取决于HttpContext
:
private static readonly string ServerPath = System.Web.HttpContext.Current.Server.MapPath("~/content/");
public ProfileController(IService service)
{
}
当我尝试初始化我的控制器时,它会抛出&#34;对象引用未设置为对象的实例。&#34;不是错误。这是因为HttpContext
null 。
那么,如何在不使用构造函数的参数的情况下向控制器提供HttpContext
。