Ошибка в том, что свойство ControllerContext.HttpContext
не равно virtual
, поэтому Moq не может переопределить его.
Рассмотрите возможность использования фактического ControllerContext
и высмеивание HttpContext
для присвоения свойству
var formCollection = new FormCollection(new Dictionary<string, StringValues>()
{
{"mAction", "someAction" },
{"mRefId", "0" }
});
var controllerContext = new ControllerContext() {
HttpContext = Mock.Of<HttpContext>(ctx => ctx.Request.Form == formCollection)
};
controller.ControllerContext = controllerContext;
Или даже с использованием DefaultHttpContext
и присвоения желаемых значений
var formCollection = new FormCollection(new Dictionary<string, StringValues>()
{
{"mAction", "someAction" },
{"mRefId", "0" }
});
var httpContext = new DefaultHttpContext();
httpContext.Request.Form = formCollection;
var controllerContext = new ControllerContext() {
HttpContext = httpContext
};
controller.ControllerContext = controllerContext;