我正在爲一個接受HttpContext作爲參數的方法編寫一些單元測試。我想測試,當請求是POST時,行爲與預期相同。構建一個HttpContext進行測試,我該如何指定HttpRequest是一個POST?
當創建一個System.Net.HttpWebRequest時,很容易設置方法,但是當創建一個System.Web.HttpRequest(這是HttpContext中使用的)時,我看不到指定方法的方法。
任何想法?
對於上下文,該方法由一個httphandler調用,如果請求不是一個POST,它應該拋出一個405。我知道我可以使用web.config中的Verbs屬性來過濾允許的方法,但是我會,但是沒有什麼能阻止某人將來改變動詞屬性來允許其他方法來處理這種情況,我希望處理程序能夠照顧它本身。
助手目前使用方法:
private HttpContext GetHttpContext(string requestUrl)
{
var httpRequest = new HttpRequest("", requestUrl, "");
var stringWriter = new StringWriter();
var httpResponce = new HttpResponse(stringWriter);
return new HttpContext(httpRequest, httpResponce);
}
使用HttpContext.Current.Request.HttpMethod。通過http://stackoverflow.com/questions/6898598/http-verb-of-current-http-context –
HttpMethod是一個只有一個getter,而不是一個setter,所以不能用於測試。 – mdchris
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –