2012-06-18 25 views
0

我有一個單元測試所需的方法,正如主題所暗示的那樣,它會生成一個NameValueCollection。 NVC的所有屬性都通過表單數據填充:如何在C#中使用Request.Form創建NameValueCollection的單元測試方法(asp.net)

private NameValueCollection generateCollection() 
{ 
    NameValueCollection nvc; 
    nvc = new NameValueCollection(); 
    nvc.add("firstItem", HttpUtility.HtmlEncode(Request.Form["firstItem"])); 
    nvc.add("secondItem", HttpUtility.HtmlEncode(Request.Form["secondItem"])); 
    nvc.add("thirdItem", HttpUtility.HtmlEncode(Request.Form["thirdItem"])); 

    return nvc; 
} 

我正在使用Visual Studio附帶的單元測試功能。我該怎麼做?

回答

3

您需要更改方法採取HttpRequestBase

然後,您可以使用模擬版本調用它。

+0

請原諒我聽起來像一個完全白癡,但...我是一個學生在工作安置,並只是學習如何做很多這些事情。我熟悉VS中單元測試的(非常)基礎知識,但這是新的......你能否指點一些材料的方向來幫助我完成這個任務?我改變了採用HttpRequestBase的方法,並且用一個模擬版本來調用它,我有點迷失在你的意思中。道歉,如果我問太多.... – mrwienerdog

+0

'請求'是你的('頁??)類的一個屬性,它返回一個'HttpRequest'實例。你有麻煩,因爲你無法控制。 – SLaks

+0

相反,您應該修改該方法以將'HttpRequestBase'作爲參數。當你正常地調用它時,你可以傳遞'new HttpRequestWrapper(Request)'(或者爲你創建一個重載)。 – SLaks

相關問題