У меня есть FakeHttpContext Я пытался изменить, чтобы включить некоторые заголовки для целей тестированияКак настроить request.header в FakeHttpContext для модульного тестирования
public static HttpContext FakeHttpContext()
{
var httpRequest = new HttpRequest("", "http://stackoverflow/", "");
var stringWriter = new StringWriter();
var httpResponse = new HttpResponse(stringWriter);
var httpContext = new HttpContext(httpRequest, httpResponse);
var sessionContainer = new HttpSessionStateContainer("id", new SessionStateItemCollection(),
new HttpStaticObjectsCollection(), 10, true,
HttpCookieMode.AutoDetect,
SessionStateMode.InProc, false);
httpContext.Items["AspSession"] = typeof(HttpSessionState).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null, CallingConventions.Standard,
new[] { typeof(HttpSessionStateContainer) },
null)
.Invoke(new object[] { sessionContainer });
return httpContext;
}
Это работает без заголовков, но когда я добавить любой из этих строк кода между httpRequest и stringWriter строк.
httpRequest.Headers.Add("blah", "1234");
httpRequest.Headers["blah"] = "1234";
Он бросает
исключение типа 'System.PlatformNotSupportedException' произошло в System.Web.dll, но не был обработан в пользовательском коде
- Почему я получить это исключение?
- Есть возможный способ добавить заголовки HttpContext для тестирования контроллеров WebAPI?
Если вы можете заставить свой код работать с HttpContextBase, вы можете обычно имитировать такие вещи (включая запрос и заголовки запроса). Как правило, это не должно быть проблемой, если вы не используете HttpContext.Current. – Reddog
Я попытался ответить на эту ссылку http://stackoverflow.com/questions/32640/mocking-asp-net-mvc-controller-context, но, похоже, она не работает с контроллерами WebAPI, но MVC-контроллеры – Oluwafemi