Процедура для этого, кажется, немного изменилась в MVC2 (я использую RC1). Решение Фила Хаака мне не подходит, если для действия требуется определенный метод ([HttpPost]
, [HttpGet]
). Разобравшись в Reflector, похоже, что метод проверки этих атрибутов изменился. MVC теперь проверяет request.Headers
, request.Form
и request.QueryString
для значения X-HTTP-Method-Override
.
Если вы добавляете макеты для этих свойств, это работает:
var request = new Mock<HttpRequestBase>();
request.Setup(r => r.HttpMethod).Returns("POST");
request.Setup(r => r.Headers).Returns(new NameValueCollection());
request.Setup(r => r.Form).Returns(new NameValueCollection());
request.Setup(r => r.QueryString).Returns(new NameValueCollection());
var mockHttpContext = new Mock<HttpContextBase>();
mockHttpContext.Expect(c => c.Request).Returns(request.Object);
var controllerContext = new ControllerContext(mockHttpContext.Object, new RouteData(), new Mock<ControllerBase>().Object);