2
我有一個FakeHttpContext我一直在試圖修改,包括用於測試目的如何FakeHttpContext設置Request.Header單元測試
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